Apollo 客户端/使用 localhost 反应本机错误
Posted
技术标签:
【中文标题】Apollo 客户端/使用 localhost 反应本机错误【英文标题】:Apollo client / React native error using localhost 【发布时间】:2021-07-06 14:32:13 【问题描述】:我有一个与 Apollo 客户端(grapqhl)一起使用的 react native 应用程序,问题是我有一个生产 API 并且 Apollo 客户端可以正常工作,但是如果我将 apollo 配置中的 uri
更改为 localhost:8000/graphql
,我的 IDE 控制台抛出以下错误:
[Unhandled promise rejection: Error: Network request failed]
at http://192.166.0.14:19000/node_modules%5Cexpo%5CAppEntry.bundle
?platform=android&dev=true&hot=false&minify=false:358011:25 in new
ApolloError
at node_modules\@apollo\client\core\core.cjs.js:1081:45 in self.ge
tObservableFromLink.subscribe$argument_0.error
at node_modules\zen-observable\lib\Observable.js:139:8 in notifySu
bscription
at http://192.168.0.14:19000/node_modules%5Cexpo%5CAppEntry.bundle
?platform=android&dev=true&hot=false&minify=false:356825:4 in onNo
tify
at node_modules\zen-observable\lib\Observable.js:239:4 in <anonymo
us>
at node_modules\@apollo\client\utilities\utilities.cjs.js:946:24 i
n iterateObserversSafely
at <anonymous>:null in Array.forEach
at node_modules\@apollo\client\utilities\utilities.cjs.js:945:4 in
iterateObserversSafely
at http://192.168.0.14:19000/node_modules%5Cexpo%5CAppEntry.bundle
?platform=android&dev=true&hot=false&minify=false:339027:12 in Obj
ect.error
at node_modules\zen-observable\lib\Observable.js:139:8 in notifySu
bscription
我已经能够查看一些questions 来解决类似的问题,但我发现了两件事:
-
类似问题的问题真的很老了,有些事情已经改变了,随着阿波罗 3 的发布,更多
他们建议的解决方案没有奏效,例如将 localhost 更改为我机器的 IP。
我正在使用 expo 运行 react native,我尝试在 expo go 和 android studio 中运行该应用程序,但没有任何好的结果。
Apollo 客户端配置
import ApolloClient, InMemoryCache from '@apollo/client';
const client = new ApolloClient(
uri: 'http://localhost:8000/graphql/',
cache: new InMemoryCache()
);
环境信息
"@apollo/client": "^3.3.11"
"react-native": "https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz"
"expo": "~40.0.0"
windows 10
【问题讨论】:
【参考方案1】:我认为 localhost 未在您的设备中定义(无论是否模拟),您应该使用 IP 地址或服务器名称 我遇到了同样的问题,就这样解决了
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:嘿,我有类似的问题。我所做的是将本地主机替换为我的开发设备 IP 地址(例如 http://192.168.xx.xx:4000/graphql 而不是 http://localhost:4000/graphql)。这是因为我使用 expo qr scan 在我的 android 设备上运行该应用程序,并且没有通过 wifi 建立隧道。
【讨论】:
以上是关于Apollo 客户端/使用 localhost 反应本机错误的主要内容,如果未能解决你的问题,请参考以下文章
Express CORs 策略阻止 Apollo 客户端从服务器获取