来自apollo-boost的ApolloClient尝试分配给只读属性

时间:2019-05-22 18:43:04

标签: react-native expo apollo apollo-client apollo-boost

我正在使用react-native,并尝试从apollo-boost加载Apollo。当我尝试导入客户端时,收到错误消息“尝试分配给只读属性”。我不确定如何解决此问题,并且从堆栈跟踪看来,它位于apollo-boost软件包中。有人知道我该如何解决吗? full stack trace

编辑:添加图片和详细信息。 当我尝试通过Expo加载应用程序时得到了这个提示。就在开始时,我明白了。堆栈跟踪中提到我的应用程序中的第一个文件StoresScreens,该行仅是导入行。

import ApolloClient from 'apollo-boost';

2 个答案:

答案 0 :(得分:2)

我遇到了同样的错误。通过使用 apollo客户端,apollo-cache-memory,apollo-link-http 程序包解决了创建Apollo客户端的问题,而不是使用apollo-boost。

这是代码App.js

import React from 'react'
import ApolloClient from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { HttpLink } from 'apollo-link-http';

const withProvider = (Component) => {

  const cache = new InMemoryCache();
  const link = new HttpLink({
    uri: 'your-url'
  })
  const client = new ApolloClient({
    link,
    cache
  });
  return class extends React.Component {
    render() {
      return (
        <ApolloProvider client={client}>
          <Component {...this.props} client={client} />
        </ApolloProvider>
      )
    }
  }
}
export default withProvider(App);

答案 1 :(得分:1)

至少可以使用Typescript作为临时解决方法,您可以这样做:

import ApolloClient from "apollo-boost/lib/index";

似乎与此问题相关:https://github.com/apollographql/apollo-client/issues/4843