Reactjs 反应未捕获不变冲突:找不到;“客户”;在消费者的背景下。将根组件包装在<;阿波罗供应商>;

Reactjs 反应未捕获不变冲突:找不到;“客户”;在消费者的背景下。将根组件包装在<;阿波罗供应商>;,reactjs,graphql,apollo,react-apollo,apollo-client,Reactjs,Graphql,Apollo,React Apollo,Apollo Client,我有一个使用React apollo:2.5.8的React应用程序和一个通过NPM安装并在应用程序中使用的自定义组件库。该库在peer和dev依赖项中列出了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 i

我有一个使用React apollo:2.5.8的React应用程序和一个通过NPM安装并在应用程序中使用的自定义组件库。该库在peer和dev依赖项中列出了
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>.`
`Uncaught不变量冲突:在用户上下文中找不到“客户端”。将根组件包装在一个文件夹中`
我还尝试在库的Webpack构建中,在
externals
中列出React apollo。这样,在应用程序中只使用一个安装。但是没有运气。每次我尝试导入组件时,都会出现此错误。应用程序中的组件能够成功查询,引发此错误的是库组件

关于如何解决这个问题有什么建议吗?我不想升级到^3.0.0,因为会有突破性的更改,并且会涉及大量重构。我也在服务器端渲染应用程序,在这种情况下,它工作得非常好,我没有得到这个错误。当我尝试运行仅客户端版本时,就会出现此错误


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

因此,我通过从我的库组件文件夹中创建应用程序内
react apollo
包的符号链接来解决此问题。因为这主要是开发环境的一个需求,所以这似乎解决了这个问题。这不是最好的解决方案,但目前还有效。

是否从同一个包导入提供程序和挂钩/组件?i、 e.仅
react apollo
而非
react apollo
@apollo/react hooks
?是的,仅
react apollo
。因为我还在
2.5.8
上,所以我没有使用挂钩