我做了这个样本:https://github.com/Akryum/vueconf-2017-demo
因此,我的项目中有相同的文件:https://github.com/Akryum/vueconf-2017-demo/blob/master/src/apollo-client.js
这是我的应用程序中使用的代码:
import { ApolloClient, createNetworkInterface } from 'apollo-client'
const apolloClient = new ApolloClient({
networkInterface: createNetworkInterface({
uri: 'http://localhost:3000/graphql',
transportBatching: true,
}),
connectToDevTools: true,
})
export default apolloClient
因此,我将此错误(警告)发送到控制台:
warning in ./src/apollo/client.js
15:23-45 "export 'createNetworkInterface' was not found in 'apollo-client'
这是来自浏览器控制台:
TypeError: Object(__WEBPACK_IMPORTED_MODULE_0_apollo_client__["createNetworkInterface"]) is not a function. (In 'Object(__WEBPACK_IMPORTED_MODULE_0_apollo_client__["createNetworkInterface"])({
uri: 'http://localhost:3000/graphql',
transportBatching: true
})', 'Object(__WEBPACK_IMPORTED_MODULE_0_apollo_client__["createNetworkInterface"])' is an instance of Object)
有什么问题?
答案 0 :(得分:7)
看起来repo尚未更新为使用apollo-client
的最新版本。 Apollo客户端在2.0版本中进行了重大更改。您可以查看这些更改的摘要和升级指南here。实施的一项重大更改是从NetworkInterface
切换到ApolloLink
,这就是您看到无法找到createNetworkInterface
的错误的原因。
要么降级到1.9.3版本
npm install apollo-client@1.9.3
或按照上面链接中的升级指南查看如何在项目中使用2.0版。
答案 1 :(得分:7)
自版本2.x Apollo弃用了NetworkInterface以支持Apollo Link,遗憾的是这是一个重大改变。
要让您的代码重新运行,您需要进行以下更改,
替换
import { ApolloClient, createNetworkInterface } from 'apollo-client'
与
import ApolloClient from 'apollo-client';
添加
import { HttpLink } from 'apollo-link-http';
并运行
npm install --save apollo-link-http
替换
const apolloClient = new ApolloClient({
networkInterface: createNetworkInterface({
uri: 'http://localhost:3000/graphql',
transportBatching: true,
}),
connectToDevTools: true,
})
带
const apolloClient = new ApolloClient({
link: new HttpLink({
uri: 'http://localhost:3000/graphql'
}),
connectToDevTools: true,
})
并且不要忘记导出您的功能
export default apolloClient