React Native:模拟器停留在"从localhost加载:8081 .."

时间:2018-05-08 05:11:37

标签: android react-native

Screenshot from Android phone running the app

我正在研究一个本机反应项目,我通过USB调试和命令" react-native运行android "在我的Android手机上运行它。

它工作得很好但是现在即使构建成功,应用也会卡在白色屏幕上#34; 从localhost加载:8081 "。没有对任何应用文件进行任何更改。

我尝试运行react-native演示应用程序(使用react-native init),我仍然面临同样的问题。

我试过的解决方案但问题仍然存在:

  1. rm -rf node_modules&& npm install
  2. adb reverse tcp:8081 tcp:8081
  3. 从Android Studio在Android模拟器上运行。
  4. 使用命令 npm run android
  5. 这是命令行中显示的内容:

      

    lenovo @ lenovo-Lenovo-ideapad-500S-14ISK:〜/ IRMSold $ react-native   run-android扫描文件夹中的符号链接   / home / lenovo / IRMSold / node_modules(6ms)JS服务器已经运行。   在设备上构建和安装应用程序(cd android&& ./gradlew   installDebug)...

         

    配置项目:app警告:配置'编译'已经过时了   并已被“实施”所取代。和' api'。这将是   在2018年底删除。有关更多信息,请参阅:   http://d.android.com/r/tools/update-dependency-configurations.html

         

    配置项目:react-native-google-signin警告:配置   '编译'已经过时,已被“实施”所取代。和   ' API&#39 ;.它将在2018年底删除。欲了解更多信息   看到:   http://d.android.com/r/tools/update-dependency-configurations.html   警告:指定的Android SDK Build Tools版本(23.0.3)是   忽略,因为它低于最低支持版本(27.0.3)   Android Gradle插件3.1.1。 Android SDK Build Tools 27.0.3将是   用过的。要取消此警告,请删除" buildToolsVersion' 23.0.3'"   从您的build.gradle文件,作为每个版本的Android Gradle   插件现在有一个默认版本的构建工具。

         

    配置项目:react-native-vector-icons警告:配置   '编译'已经过时,已被“实施”所取代。和   ' API&#39 ;.它将在2018年底删除。欲了解更多信息   看到:   http://d.android.com/r/tools/update-dependency-configurations.html   警告:指定的Android SDK Build Tools版本(26.0.1)是   忽略,因为它低于最低支持版本(27.0.3)   Android Gradle插件3.1.1。 Android SDK Build Tools 27.0.3将是   用过的。要取消此警告,请删除" buildToolsVersion' 26.0.1'"   从您的build.gradle文件,作为每个版本的Android Gradle   插件现在有一个默认版本的构建工具。

         

    任务:app:installDebug安装APK' app-debug.apk'关于联想   X3a40 - 6.0.1' for app:debug安装在1台设备上。

         

    在13s内成功完成66个可操作的任务:1个已执行,65个是最新的   运行adb -s 567bf688反向tcp:8081 tcp:8081启动应用程序   567bf688(adb -s 567bf688 shell启动-n   com.irms / com.irms.MainActivity)...开始:意图{   cmp = com.irms / .MainActivity}

    请帮助我,因为我尝试了其他可以在网上找到的修复方法。

10 个答案:

答案 0 :(得分:3)

就我而言,问题是由于文件句柄限制所致。一次,我通过以下命令刷新限制,应用程序开始运行,没有任何问题。

echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_watches && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_queued_events && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_instances && watchman shutdown-server

我正在使用Ubuntu 18.04。

答案 1 :(得分:1)

我的问题出在Watchman上,要识别它有些棘手,因为React Native高兴地捆绑了我的应用程序,然后转移并启动了APK!它不断引发关于/tmp/name-state(其中name是您的名字)权限的错误,因此我不得不chmod 0700 /tmp/name-state(以减少对该目录的权限)然后创建一个新应用{{1 }}之后,我从另一个终端再次启动Metro(确保您位于新项目目录中)并运行npm react-native init appName。然后我可以通过npm react-native start启动appName

答案 2 :(得分:0)

你试过这个吗?

警告:指定的Android SDK Build Tools版本(23.0.3)将被忽略,因为它低于Android Gradle Plugin 3.1.1的最低支持版本(27.0.3)。将使用Android SDK Build Tools 27.0.3。要取消此警告,从build.gradle文件中删除“buildToolsVersion '23 .0.3'”,因为每个版本的Android Gradle插件现在都有默认版本的构建工具。

答案 3 :(得分:0)

您应该等待软件包服务器的状态完美运行。直到“加载依赖关系图完成”。如果不是这样,您将被困在从本地主机8081加载。

答案 4 :(得分:0)

也许您的8081端口已在使用中。

在这里尝试第一个解决方案 https://facebook.github.io/react-native/docs/troubleshooting

$ sudo lsof -i:8081 $ kill -9

答案 5 :(得分:0)

检查设备是否具有通过使用转发的计算机8081端口

adb reverse --list

如果没有任何结果,您应该  创建反向套接字连接,以便您的设备可以访问Metro服务器

adb reverse tcp:8081 tcp:8081

由于某种原因,它仍然无法正常工作,因此我在此窗口中按了ENTER键(Metro Bundler Window) 然后等到达到100%,然后该应用开始在我的手机上显示。

答案 6 :(得分:0)

我想分享我的经验

在Android模拟器react-native run-android上,加载时冻结。虽然同样在iOS模拟器上运行。就我而言,我在iOS模拟器上远程启用了调试js,发现我已经将字符串值提供给了Boolean属性。一旦我更正了它在android模拟器上运行的问题。

经验教训:Android构建并不是那么宽容,因此可以在ios上运行并修复调试器上出现的任何错误,这些错误可能导致在加载时冻结模拟器。从8081

答案 7 :(得分:0)

在某些情况下,您无法连接到调试器:

设备和主机肯定应该在同一网络上。将您的移动设备连接到PC的网络,或者将PC连接到移动热点。 在某些情况下,在实际设备上,您可能需要运行adbe reverse命令:

adb reverse tcp:8081 tcp:8081

卸载应用程序,停止打包程序,然后使用重置缓存选项重新启动打包程序:

npm start -- --reset-cache

然后,在设备上再次运行它。

摇动设备,然后在菜单中选择开发者设置

在“设备的调试服务器主机和端口”部分中,通过端口8081输入您的pc ip地址,如下所示:192.168.1.3:8081

答案 8 :(得分:0)

杀死已经在8081端口上运行的进程对我来说很有效

在Windows中

netstat -ano | findstr:8081

tskill TypeyourPID

谢谢@luttius

答案 9 :(得分:0)

我每天都被卡住,问题与 Watchman 权限有关。查看经过验证的解决方案,我希望这对某人有帮助

Homebrew Permissions for Watchman on Muti-user Mac