当我在服务器端更新架构时,中继/GraphQL 架构缓存未更新
Posted
技术标签:
【中文标题】当我在服务器端更新架构时,中继/GraphQL 架构缓存未更新【英文标题】:Relay/GraphQL Schema cache not updating when I update schema on server side 【发布时间】:2017-01-09 08:35:14 【问题描述】:我有一个使用 Relay 和远程 GraphQL 服务器的 React 应用程序。当我启动 webpack 服务器时,我让它获取最新的模式并将其提供给 babel-relay-plugin。
效果很好....除非我进行架构更改。似乎 React 或 Relay 或 webpack 或其他东西正在缓存模式,因为当我运行应用程序时,我会在浏览器控制台中收到模式验证错误。但是,当我使用 GraphIQL 对 GraphQL 服务器手动运行查询时,查询成功。所以我在想,它必须在 react、relay、webpack 端有某种缓存?
我尝试过的事情:
-
列表项
重启 webpack 服务器
删除
node_modules
和 npm install
我什至尝试过重新启动我的计算机(这实际上似乎有效,但可能是巧合)
提前感谢您的帮助。
【问题讨论】:
我观察到了同样的问题,但尚未找到解决方案。 您是否尝试过更改 js 文件中的某些内容以强制重新编译,也许它没有检测到 js 中的更改,因此它不会重新编译。这有时会奏效。我怀疑 webpack 也可能正在缓存东西,并且与HotModuleReplacment
一起可能会有更多问题。不过不确定。
是的,我试过了。 :-/ 似乎什么也没做。
是的,它对我也没有可靠的工作。
您找到可靠的解决方案了吗@postalservice14?
【参考方案1】:
事实证明,这当然是人为错误。在我的 babel-loader 查询中,我的 cacheDirectory 为 true
。您可以在 babel-loader 自述文件中了解它(只需在页面上查找 'cacheDirectory')https://github.com/babel/babel-loader
一旦我将其更改为false
,这是默认设置。问题消失了。希望对其他人有所帮助。
【讨论】:
【参考方案2】:当我切换到 Webpack 2 时,这发生在我身上。
在我的情况下,解决方案是将babelRelayPlugin
移动为第一个在.babelrc
中执行的插件。
我不太确定为什么。
【讨论】:
我把它放在第一位。但是我仍然观察到同样的问题。以上是关于当我在服务器端更新架构时,中继/GraphQL 架构缓存未更新的主要内容,如果未能解决你的问题,请参考以下文章