带有 React 的 Apollo 客户端 2 无法进行查询

Posted

技术标签:

【中文标题】带有 React 的 Apollo 客户端 2 无法进行查询【英文标题】:Apollo client 2 with React couldn't make query 【发布时间】:2018-04-19 18:32:01 【问题描述】:

我对带有 React 的 Apollo 客户端版本 2 有疑问。 (https://www.apollographql.com/docs/react/)

当我根据文档设置 Apollo 客户端时,我无法在 GraphQl 服务器上进行查询,它会引发错误:

Uncaught (in promise) TypeError: _super.call is not a function
    at new ObservableQuery (ObservableQuery.js:36)
    at QueryManager.watchQuery (QueryManager.js:393)
    at QueryManager.js:420
    at new Promise (<anonymous>)
    at QueryManager.query (QueryManager.js:418)
    at ApolloClient.query (ApolloClient.js:86)
    at Object._typeof (index.js:21)
    at __webpack_require__ (bootstrap 4164d2c8f7d280e544dd:19)
    at Object.<anonymous> (location.js:34)
    at __webpack_require__ (bootstrap 4164d2c8f7d280e544dd:19)

我的代码在这里:

import  ApolloClient  from "apollo-client";
import  HttpLink  from "apollo-link-http";
import  InMemoryCache  from "apollo-cache-inmemory";
import gql from "graphql-tag";
const client = new ApolloClient(
  link: new HttpLink( uri: "https://q80vw8qjp.lp.gql.zone/graphql" ),
  cache: new InMemoryCache()
);
client
  .query(query: gql`hello`)
  .then(console.log);

谁能帮我解决这个问题?

【问题讨论】:

这有什么好运气吗?你的应用程序的其余部分是什么样的?你在用 webpack 吗? 我也有这个问题。相当关键的问题,已经几个月了:( 【参考方案1】:

免责声明:我的回复假设您和我有同样的问题。

不确定这里到底发生了什么,但似乎是 Windows 上的 webpack 的问题。我很幸运能够在 MacBook Pro 上运行 Parallels (Windows 10),因此我能够通过在 Mac 而不是 Windows 上针对我的 Windows 项目运行 webpack 来克服这个问题。

不是一个完整的答案,而是一个线索,并且可以解决。

如果您无法在 Mac 上进行构建,尽管这在短期内没有多大帮助。如果您还没有考虑切换到 Apple,还有一个理由 ;)

可能需要向 webpack 团队记录问题以解决问题 https://github.com/webpack/webpack/issues,但这项工作暂时可以解决我的问题,所以我要继续前进。

【讨论】:

我正在使用 Linux Mint。我之前在 Mac 上测试过相同的配置,它可以工作。 所以我猜 apollo/webpack 目前不能在 Windows 和 Linux 上工作。 不仅仅是 Windows 问题。在mac上也有这个。相同的设置。

以上是关于带有 React 的 Apollo 客户端 2 无法进行查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地网络上部署带有 apollo 客户端和 apollo-server 后端的 React 应用程序

如何使用带有 react-apollo 的模拟数据进行测试

使用带有 React 和 Apollo 的 graphql 订阅制作实时应用程序

为 apollo 客户端创建反应组件,带有对象参数的简单模型

使用带有反应生命周期方法的 react-apollo 2.1 突变

在 Apollo 客户端中使用 react-router 返回时 React 未更新其状态