问题标签 [apollo-link]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2051 浏览

elasticsearch - 如何为每个查询设置 Apollo 链接 URI - 初始 uri 保留,我应该使用动态 uri(角度 8)

概括

我正在Angular 8中构建一个简单的搜索应用程序,使用Apollo和一个graphql服务器而不是elasticsearch;我将弹性查询传递到 URI 中的后端,然后 graphql 查询在弹性返回的数据中运行。但是,URI 是在 Apollo 的第一次创建中设置的,然后对于该会话中的后续查询不会更改。

背景

作为一个新手 Angular/Apollo 开发人员,我只是想为未来的搜索工具实现初始实现;我已经查看了 graphql-compose-elastic 但它看起来很笨拙,至少对于直接的原型需求来说是这样。我尝试将 Apollo 声明移动到子模块,使用 URI 作为全局或通过 localStorage,但客户端不会在查询 1 后重置 URI。我仍然得到结果(没有错误)但它们总是相同的从查询 1 返回的记录。

当前代码

我有一个创建 httpLink 的 graphql.module.ts,目前在运行时它从 localStorage 获取 uri 字符串(包括弹性搜索)参数:

在搜索结果组件中(使用 Form + ag-grid),它设置 localstorage uricombo 变量:

search.component.ts

graphql.module.ts

search.component.ts

...将数据行返回到 ag-grid。

这很好,但是当用户提交后续搜索时,将使用原始 uri,并且再次返回相同的记录。

每次搜索提交时,存储的uricombo值肯定会更新,而 Apollo 链接创建方法只运行一次(第一次)。

当前的假设是,一旦创建了 apollo 客户端,它就会保留 URI,但我不确定如何重构它以刷新 URI - 我怀疑动态 URI 会有所帮助,但不太清楚如何实现。

正如我所说的对 Angular 和 Apollo 来说都比较新,(虽然是长期的 Java 骑师)——我可能正在做一些无聊的事情。非常感谢任何帮助/模式/示例

0 投票
1 回答
1022 浏览

apollo - 如何动态更改 Apollo Web Socket Link URI?

目前我已经设置了 Apollo 的 web socket 链接,如下所示:

这在连接持续时工作正常,但如果查询字符串中的令牌已过期,则需要重新建立连接时会失败。

我正在处理的基础设施的设置方式要求将此令牌设置为 URI 中的查询参数。如何动态更改 URI,以便在需要重新建立连接时提供新令牌?

0 投票
6 回答
3104 浏览

graphql - `Cannot use e "__Schema" from another module or realm.` 和 `使用 ApolloClient 复制 "graphql" 模块

我有一个带有 ApolloClient 和 Apollo-Link-Schema 的 React 应用程序。该应用程序在本地运行良好,但在我们的暂存环境(使用 GOCD)中,我们收到以下错误:

依赖项是用 yarn 安装的,我已将该resolutions字段添加到 package.json。

我检查了 yarn.lock 并且只能找到 graphql 包的一个参考。 npm ls graphql不显示任何重复项。

我认为这可能是 webpack 的构建问题 - 我有一个不同的构建脚本用于暂存,但是在本地运行它我仍然能够让 react 应用程序与该包一起运行。

任何人都可以提出其他建议来帮助我解决这个问题吗?

0 投票
0 回答
1349 浏览

reactjs - 如何解决 Apollo 订阅“WebSocket 握手期间出错:意外响应代码:400”

我有一个使用 React 并订阅 GraphQL 后端的遗留应用程序。今天,我升级了我所有的软件包,尤其是那些(我认为它们是我问题的根源,但我不确定):

  • react-apollo^2.4.0^3.1.3

  • apollo-link-ws^1.0.14^1.0.19

工作代码是这样的:

因此,这是Apollo 网站上描述的基本代码,但升级后我收到此错误(在网络中查看我的 graphQL 响应时):

WebSocket 握手期间出错:意外的响应代码:400

在我的开发终端中,我看到一个无限的日志说:

在此处输入图像描述

评论

在我的setupProxy.jsws设置为true:

对此有何反馈或经验?

0 投票
0 回答
96 浏览

apollo - Apollo,AppSync,关于缺少字段的警告

我收到此警告:

这是一个警告,但我的整个应用程序有时会出现一些奇怪的行为。所以我想知道如何解决这些警告。显然,当我触发在 chrome 控制台上发送该警告的功能时,该应用程序运行正常,但我不知道为什么会发生。

在此处输入图像描述

我不得不处理一个关于写入缓存一些数据的错误,在这种情况下的解决方案是id为每个对象添加一个值,还有一个__typename

关于错误和一些解决方案:https ://github.com/apollographql/apollo-client/issues/2510

大致相同,但带有 _ typenamehttps ://github.com/apollographql/apollo-client/issues/1826

...但这是另一个故事,无论如何,这个错误发生在我使用相同功能的 20 次中的 1 次......这一切都很奇怪和随机,但现在我想知道是否有人对警告有线索。

这是显示我从 Apollo 使用的代码的一部分

0 投票
0 回答
142 浏览

javascript - 反应原生异步存储和 apollo-link 控制台日志未在承诺中调用

我正在尝试console.log使用 authLink 函数,但没有看到任何控制台日志输出。就好像函数本身从未被调用过。

任何人都知道为什么我在 authLink 中调用它时看不到任何 console.log 输出?

0 投票
2 回答
1916 浏览

angular - 使用 graphql 和 apollo 客户端刷新 Angular 令牌

当我的第一个请求返回 401 时,我正在尝试设置刷新令牌策略以使用 GraphQL 和 apollo 客户端刷新 Angular 9 中的 JWT。

我已经为 graphql 设置了一个新的 angular 模块,我正在创建我的 apolloclient。即使使用经过身份验证的请求,一切都很好,但我需要让我的正常刷新令牌策略也能正常工作(刷新令牌周期完成后重新制作并返回原始请求)。我只找到了一些资源来帮助解决这个问题,而且我已经非常接近了——我唯一缺少的是从我的刷新令牌 observable 中返回 observable。

这是认为应该工作的代码:

我知道我的请求第二次起作用了,因为如果我从我的 authenticationService 订阅中的 forward(operation) observable 中注销结果,我可以在最初的 401 失败后看到结果。

上面显示了来自原始请求的数据,但它没有传递给我最初称为 graphql 的组件。

我远非可观察的专家,但我认为我需要做某种地图(平面图、合并图等)以使此返回正常工作,但我只是不知道。

任何帮助将不胜感激

TIA

编辑#1:这让我更接近了,因为它现在实际上订阅了我在 AuthenticationService 中的方法(我在 tap() 中看到了结果)

我现在看到这个错误被抛出:

core.js:6210 错误类型错误:您在预期流的位置提供了无效对象。您可以提供 Observable、Promise、Array 或 Iterable。

编辑#2:包括 onError() 函数签名的截图: 在此处输入图像描述

编辑#3 这是最终的工作解决方案,以防其他人遇到此问题并需要它用于角度。我不喜欢更新我的服务方法来返回一个承诺,然后将该承诺转换为一个 Observable - 但正如@Andrei Gătej 为我发现的那样,这个 Observable 来自不同的命名空间。

0 投票
0 回答
2109 浏览

reactjs - 将上下文从 useQuery 传递给 Apollo 客户端

我正在构建一个 next.js 应用程序,我打算在其中使用几个 graphql-apis。在我的组件中使用useQueryfrom时,我想传递一个上下文。@apollo/react-hooks目前我的客户看起来像这样:

我的示例组件如下所示:

在客户端中,我尝试打印上下文,console.log(operation.getContext())我希望在'context: 'api'某个地方看到……但什么也没有。有人可以帮助我吗?

0 投票
1 回答
241 浏览

error-handling - 如何修复 Apollo-link 中针对 GraphQL 错误的错误

在这里,我可以同时使用 graphQLErrors 和 networkError:

但是当试图在 useQuery 中获取这些错误时,在组件级别,只有 networkError 被返回,而 graphQLErrors 是一个空数组:

例如,我从后端收到一个错误 403 到 onError 函数,但无法在 useQuery 中处理这个错误!

在此处输入图像描述 这个问题怎么解决??

0 投票
1 回答
303 浏览

graphql - 有没有办法让阿波罗反应的 HTTPS 端点?

当我有一个 http url 时,按照 apollo react 文档可以正常工作,但是当我使用带有 SSL 的端点时,我遇到了 CORS 错误。

我知道 httpLink 是用于 http,但我没有看到任何关于如何实现 https 链接的文档。