【问题标题】:Graphql schema for Relay gets cached somehow by webpack (?)用于 Relay 的 Graphql 模式被 webpack 以某种方式缓存(?)
【发布时间】:2017-03-05 22:45:00
【问题描述】:

所以问题很简单。我正在使用 webpack 和中继,当我通过命令包更新我的架构时,会重建但当我尝试查询更新的字段时,我收到错误:

GraphQL 验证错误 Cannot query field "X" on type "Y". 在文件 Z 中。如果最近添加了参数/字段/类型,请尝试更新您的 GraphQL 架构。

但架构已更新,我可以看到此字段。所以我可以以某种方式清除缓存以防止这种情况发生。只是重建捆绑包没有帮助。

【问题讨论】:

    标签: webpack relay


    【解决方案1】:

    伙计们,我最近遇到了同样的问题。问题是 babel-loader 插件在做某种类型的缓存。将 cacheDirectory 选项设置为 false 为我修复了它。这是修复后我对 jsx 的 webpack 模块规则:

    {
        test: /\.jsx?$/,
        use: {
          loader: 'babel-loader',
          options: {
            babelrc: false,
            cacheDirectory: false,
            plugins: [path.join(__dirname, 'loaders/babelRelayPlugin')],
            presets: ['es2015', 'stage-0', 'react']
          }
        },
      },
    

    【讨论】:

      【解决方案2】:

      我在引用文件中不存在的行时遇到了相同的持久调用堆栈错误 - 即使在从项目中删除文件之后也是如此。 webpack 构建成功(使用选项 --cache false 运行),但错误显示为来自所有浏览器开发控制台中的 webpack 输出文件。我尝试在每次构建之前删除该文件,以确保它使用新生成的版本来加载应用程序,但错误不会清除。我终于不得不从头开始在主机上创建一个全新的项目目录,重新安装所有节点包和应用程序——此时它加载得很好,所以很明显,有些东西被缓存在输出文件以外的地方......

      【讨论】:

      • 您建议从头开始重建项目?
      【解决方案3】:

      我发现在我的案例中,文件夹 .happypack 的内容是这种行为的原因。所以rm -rf .happypack/* 解决了问题。

      【讨论】:

        猜你喜欢
        • 2011-05-28
        • 2011-02-13
        • 2016-10-23
        • 2018-10-12
        • 2018-09-30
        • 1970-01-01
        • 1970-01-01
        • 2019-12-27
        • 1970-01-01
        相关资源
        最近更新 更多