Relay 的 Graphql 模式被 webpack 以某种方式缓存(?)

Graphql schema for Relay gets cached somehow by webpack (?)

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

GraphQL validation error Cannot query field "X" on type "Y". in file Z. Try updating your GraphQL schema if an argument/field/type was recently added.

但是架构已更新,我可以看到该字段。那么我可以以某种方式清除缓存以防止这种情况发生吗?仅重建捆绑包无济于事。

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

伙计们,我最近遇到了同样的问题。问题是 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']
      }
    },
  },

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