react-native android应用程序发布版本上的Graphql网络错误

Posted

技术标签:

【中文标题】react-native android应用程序发布版本上的Graphql网络错误【英文标题】:Graphql Network Error on release version of react-native android app 【发布时间】:2020-02-19 12:30:18 【问题描述】:

我开发了一个使用 graphql 的 react-native android 应用程序,我可以连接到 graphql 服务器以及执行突变和查询,但只能在应用程序的调试版本上。当我构建应用程序的发布版本并在我的手机上运行它时,就会出现问题。在执行登录突变时,我面临'networkError: ', '"line":123,"column":7285,"sourceURL":"index.android.bundle"'

Graphql 初始化代码,

const httpLink = createHttpLink(
  uri: 'https://<IP>:4050'
)

const authLink = setContext((_,  headers ) => 
  getMyValue(AUTH_TOKEN)
  return 
    headers: 
      ...headers,
      authorization: token ? `Bearer $token` : ''
  
)

const client = new ApolloClient(
  link: authLink.concat(httpLink),
  cache: new InMemoryCache()
)

这是引发错误的组件,

<Mutation
                mutation=gql`
                  mutation login($username:String!,$password:String!)
                    login(username:$username,password:$password)
                  
                `
                variables= username, password 
                onError=(err) => 
                  console.log('err: ', err);
                
                onCompleted=data => ...
              >
                mutation => (
                  <Button full style=styles.loginButton
                    onPress=() => 
                        mutation()
                    >
                      <Text>Login</Text>
                  </Button>
                )
              </Mutation>

在应用程序的调试版本上,它转到 onCompleted 代码块,这也是我想要的应用程序的发布版本。相反,在应用程序的发布版本中,它会转到 onError 代码块并引发网络错误。

【问题讨论】:

也许有帮助 [link] (github.com/apollographql/apollo-client/issues/…) 谢谢,这与我的解决方案相同,但更好的解决方案是通过网络安全配置文件。 【参考方案1】:

在你的 android manifest 应用标签中添加这一行

android:usesCleartextTraffic="true"

【讨论】:

以上是关于react-native android应用程序发布版本上的Graphql网络错误的主要内容,如果未能解决你的问题,请参考以下文章

React-Native 尝试运行 android,收到有关 /bin/sh 的错误:/usr/local/share/android-sdk/platform-tools/adb: No such

Facebook在android的react-native应用程序中登录

使用 react-native 克隆本机 android 警报屏幕

将 react-native 集成到现有的 android 应用程序中?

React-native run-android 构建了我的应用程序的正确版本,但 assembleRelease/react-native run-android --variant=release

部署由React-Native开发的android和IOS应用程序