反应未捕获的不变违反:在ApolloConsumer的上下文中找不到“客户端”。将根组件包装在<ApolloProvider>中

时间:2019-11-26 02:53:08

标签: reactjs graphql apollo react-apollo apollo-client

我有一个使用react-apollo:2.5.8的React应用程序,以及一个我通过NPM安装并在应用程序中使用的自定义组件库。该库在对等和开发依赖项中列出了react-apollo:2.5.8。自从我将react-apollo升级到2.5.8之后,我一直收到此错误

`Uncaught Invariant Violation: Could not find "client" in the context of ApolloConsumer. Wrap the root component in an <ApolloProvider>.`

我也尝试在该库的Webpack构建的externals中列出React-apollo。这样,在App中仅使用一个安装。但是没有运气。每次尝试导入组件时,都会不断出现此错误。应用程序中的组件能够成功查询,是库组件引发此错误。

关于如何解决此问题的任何建议?我不想升级到^ 3.0.0,因为存在重大更改,并且会涉及很多重构。我也在服务器端渲染该应用程序,在这种情况下,它运行正常,并且没有出现此错误。这是我尝试运行仅客户端版本时出现的错误。

更新:我可以看到库组件似乎仍在从node_modules文件夹使用其自己的react-apollo。模块格式为ejs,而在应用程序中,模块格式为主要选项cjs。这可能是导致错误的原因。我将看看是否可以阻止库组件使用其自己的react-apollo包。

1 个答案:

答案 0 :(得分:0)

因此,我通过从库组件文件夹中创建指向应用程序内react-apollo包的符号链接来解决此问题。由于这主要是开发环境的要求,因此似乎可以解决此问题。不是最好的解决方案,但目前可以使用。