Android 模拟器显示网络错误,但 iOS 模拟器工作正常

问题描述 投票:0回答:2

我以前从未使用过 Android Studio 或 Android Emulator。最近,我在我的计算机上下载并设置了它们,以测试我正在使用 Expo、React Native 和 Apollo graphql 进行的项目。当我在 iOS 模拟器上测试我的项目时,登录或在屏幕之间移动都没有问题。但是,当我尝试在 Android 模拟器上登录我的应用程序时,我在设备上收到一条错误消息,提示凭据无效,并在终端中收到一条错误消息:

{
  "name": "ApolloError",
  "graphQLErrors": [],
  "clientErrors": [],
  "networkError": {
    "line": 21252,
    "column": 33,
    "sourceURL": "http://192.168.0.133:19000/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false"
  },
  "message": "Network request failed",
  "line": 142425,
  "column": 30,
  "sourceURL": "http://192.168.0.133:19000/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false"
}

为了解决这个问题,我尝试创建一个新用户,但是当我这样做时我也遇到了错误。

Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
 LOG  [Network error]: TypeError: Network request failed
 LOG  true
 LOG  {
  "name": "ApolloError",
  "graphQLErrors": [],
  "clientErrors": [],
  "networkError": {
    "line": 21252,
    "column": 33,
    "sourceURL": "http://192.168.0.133:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false"
  },
  "message": "Network request failed",
  "line": 142425,
  "column": 30,
  "sourceURL": "http://192.168.0.133:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false"
}

在模拟器中,它在

useNavigation.tsx
中显示此错误,这是我的项目中没有的文档。 (我刚开始的时候可能有,但我不是 100% 确定)有谁知道为什么会这样?我真的很感激任何帮助或建议。谢谢!

android expo react-navigation apollo
2个回答
0
投票

您可能缺少 AndroidManifest.xml 中的权限。尝试在清单中添加此权限。

    <uses-permission android:name="android.permission.INTERNET" />

0
投票

万一其他人遇到这个问题,我收到这个错误是因为我没有将

uri
url
从本地主机更改为我的 client.ts 文档(设置 apollo 客户端)中的 ip 地址。
"http://${IP address}:${PORT}/graphql"
您必须进行此更改才能使 Android 模拟器正常工作。另一方面,iOS 模拟器可以与本地主机一起正常工作。我希望文件从一开始就对此更加清楚,这样可以节省我很多时间。

此外,我在将 localhost 更改为我的 ip 地址后遇到的一些小问题涉及

justifyContent
alignContent
等。我习惯了 css,它允许
justify-content:left
等,所以即使我意识到这些样式错误在 iOS 中没有做任何事情,它们不会导致错误,所以我留下了几个。在 android 中,这些错误会导致您的应用程序崩溃,因此了解这一点很重要。

© www.soinside.com 2019 - 2024. All rights reserved.