无法与远程调试器连接

我正在使用 React.JS,当我插入设备执行 react-native run-android时,我看到一个空白页面。当我摇动设备并从选项列表中选择 Debug JS Remotely时,我看到如下屏幕。

enter image description here

仅供参考:

OS: Ubuntu 16.04
Node version is: v4.6.2
java version "1.8.0_111"
react": "15.4.1
react-native": "0.38.0
124397 次浏览

确保提供捆绑包的节点服务器在后台运行。要运行启动服务器,请使用 npm startreact-native start,并在开发期间保持选项卡处于打开状态

我用 adb reverse tcp:8081 tcp:8081reload解决了这个问题。

在我的例子中,选择 远程调试 JS启动了 Chrome,但是没有连接到 Android 设备。通常,新的 Chrome 选项卡/窗口将在地址栏中预填充调试 URL,但是在这种情况下,地址栏是空白的。超时时间过后,将显示“ Unable to connect with remote debug”错误消息。我通过以下步骤解决了这个问题:

  • 运行 adb reverse tcp:8081 tcp:8081
  • http://localhost:8081/debugger-ui粘贴到我的 Chrome 浏览器的地址栏中。您应该看到正常的调试屏幕,但您的应用程序仍然无法连接。

这应该可以解决问题。如果不行,你可能需要采取以下额外的步骤:

  • 关闭并卸载 Android 设备上的应用程序
  • react-native run-android重新安装应用程序
  • 在应用程序上启用远程调试。
  • 您的应用程序现在应该连接到调试器。

我的情况是,当我点击启用远程 JS 调试,它会启动 chrome,但不能连接到它。

我试图逃跑:

adb reverse tcp:8081 tcp:8081

,但没有工作。

我完全卸载了我的铬合金,并安装了一个新的。它的工作。

在我的例子中,问题是模拟器正在请求:

http://10.0.2.2:8081/debugger-ui

而不是:

http://localhost:8081/debugger-ui和请求失败。

解决问题: 在模拟器上启用远程调试之前,打开 http://localhost:8081/debugger-ui在铬。然后启用远程调试并返回到 chrome 页面,在那里您应该可以看到控制台日志。

解决了以下问题:

  • 在模拟器屏幕上按 Cmd + M
  • 转到 Dev settings > Debug server host & port for device
  • 设定 localhost:8081
  • 重新运行 android 应用程序: react-native run-android

调试器已连接!

我做了@sajib 的回答,并使用这个脚本重定向端口:

#!/usr/bin/env bash


# packager
adb reverse tcp:8081 tcp:8081
adb -d reverse tcp:8081 tcp:8081
adb -e reverse tcp:8081 tcp:8081


echo "🚧 React Native Packager Redirected 🚧"

我也遇到过类似的问题,所以才会想到这个问题。在我的浏览器调试器中,我收到了这个错误消息:

从原始“ http://127.0.0.1:8081”获取“ http://localhost:8081/index.delta?platform=android&dev=true&minify=false”的访问已被 CORS 策略阻止: 请求的资源上没有“ Access-Control-allow-Origin”头。如果一个不透明的响应满足您的需求,将请求的模式设置为“ no-CORS”,以便在禁用 CORS 的情况下获取资源。

我花了一段时间才意识到我在调试器中使用的是 127.0.0.1:8081而不是 localhost:8081

为了解决这个问题,我只需要把 Chrome 从:

http://127.0.0.1:8081/debugger-ui/

http://localhost:8081/debugger-ui/

卸载您的应用程序,然后运行反应-本机运行-机器人。然后点击调试端代替 http://localhost:8081/debugger-ui/,端运行反应-本机运行-机器人。如果你还没有成功,再试一次

  1. 在一个选项卡中重置缓存 ,在另一个选项卡中重置缓存
  2. Adb return tcp: 8081 tcp: 8081 (因此您可以将其添加到脚本中,然后运行 纱线运行副反向)
  3. 如果你正在使用 android,不要摇动你的手机,一个很好的提示是运行 Adb 命令。

所以你可以逃跑:

  • Adb shell 输入 keyevent 82 (菜单选项)
  • Adb shell 输入 keyevent 4646 (重新装弹)

包括所有令人印象深刻的答案专家开发人员特别提供的 Ribamar Santos,如果你没有得到它的工作,你必须检查更棘手的东西!

类似 Airplane mode的(仿真)手机!或者你的 network status of Emulator(Data status and Voice status on Cellular tab of Emulator configuration)可能被操纵不表达网络!来满足一些模拟需求!

我已经克服了这个问题的这个把戏! 这是一个有点惊人的调试找到这个洞!

在我的例子中,它还需要安装它的 npm 包

所以

npm install react-native-debugger -g

在 AndroidManifest.xml 中,我需要添加 usesCleartextTraffic:

    <application
...
android:usesCleartextTraffic="true">

不过,您可能不希望在应用程序的生产版本中保留这一点,除非您希望支持不安全的 http 请求。

在我将其添加到 AndroidManifest.xml 之后,然后按照 Tom Aranda 的回答,模拟器最终能够连接到调试器。

再加上这个

包裹 Json

devDependencies: {
//...
"@react-native-community/cli-debugger-ui": "4.7.0"
}

终结一切。

  • npm install
  • npx react-native start
  • npx react-native run-android

参考资料: https://github.com/react-native-community/cli/issues/1081#issuecomment-614223917

故障排除使用 React Cli 和 Type/js (Android 模拟器)进行本地反应

  1. 检查‘ android/src/mai/asset/index.android.bundle’是否可用
  2. 如果上面的路径不可用,那么创建路径然后文件 3. 运行捆绑包: response-national bundle —— Platform android —— dev false —— entry-file index.js —— bundle-output android/app/src/main/asset/index.android.bundle —— asset-destandroid/app/src/main/res

4.默认情况下,开发服务器在8081端口上运行。运行“反应-原生启动”,然后在浏览器上检查“ http://localhost:8081”和“ http://yourip:8081”是否有效。如果是的话 在 Android 仿真器中打开应用程序(反应-本机 run-Android)

  • 单击 Ctrl + M
  • 选择设置
  • 选择“调试服务器主机和设备端口”
  • 添加“ YourIPAddress: 8081”,例如10.0.2.2:8081

4.B 如果 http://localhost:8081不工作,那么一旦成功执行,就运行 response-national port = 8088(或任何端口)。检查浏览器的 http://localhost:8088和 http://yourip:8088。是,然后在 Android 模拟器中打开应用程序(反应-本机运行-Android)

  • 按「 Ctrl + M 」
  • 选择设置-
  • 选择“调试服务器主机”和“设备端口”-
  • 添加“ YourIPAddress: 8081”,例如10.0.2.2:8088

YourIPAddress: 打开命令提示符-> 写入‘ ipconfig’-> 拷贝 IPv4地址

至于我自己的情况,我正在使用博览会去,我的仿真器和我的 Android 手机,它给我这个错误。

  • 所以我所做的就是清除我的机器人设备上的世博会应用程序缓存和数据。一切正常

译者: 如果您使用 expo cli 创建的应用程序使用了一些 expo 不支持的本机代码或库,请尝试以下命令,以防其他解决方案不起作用。

npx expo run:android

医生

我的设想是:

我试图运行我的一个旧的世博会应用程序,从 Android 工作室构建的应用程序,并面临这个问题。上面提到的其他解决方案都不起作用。当我试图使用 Expo Go 扫描 QR 时,我知道了错误。因为我使用了反应原生 mmkv,所以我不能使用 expo-cli,我必须弹出。所以我运行了 npx expo run:android,一切开始正常运行。

解决办法是清除世博会应用数据来解决这个问题。参考文献: 如何在本机反应中禁用远程 JS 调试