React native ERROR Packager无法侦听端口8081

时间:2016-12-24 17:32:26

标签: android windows react-native package adb

在我的Windows机器上设置了React native,它在运行react-native start时不断给我这条消息:

ERROR Packager无法收听端口8081

好的,所以我根据说明改变它:

react-native start --port = 8088

这很有效,我收到了这个:

[12/24/2016, 10:03:33 AM]         HMR Server listening on /hot
React packager ready.
[12/24/2016, 10:03:41 AM] <START> Initializing Packager
[12/24/2016, 10:03:41 AM] <START> Building in-memory fs for JavaScript
[12/24/2016, 10:03:41 AM] <END>   Building in-memory fs for JavaScript (103ms)
[12/24/2016, 10:03:41 AM] <START> Building Haste Map
[12/24/2016, 10:03:41 AM] <END>   Building Haste Map (64ms)
[12/24/2016, 10:03:41 AM] <END>   Initializing Packager (221ms)

按照指示我然后运行:

C:\ ReactProjects \ AwesomeProject&gt; react-native run-android

得到这个:

JS server not recognized, continuing with build...
Running C:\Users\<user>\AppData\Local\Android\sdk/platform-tools/adb -s emulator-5554 reverse tcp:8081 tcp:8081
Building and installing the app on the device (cd android && gradlew.bat installDebug)...
JS server not recognized, continuing with build...
Running C:\Users\<user>\AppData\Local\Android\sdk/platform-tools/adb -s emulator-5554 reverse tcp:8081 tcp:8081
Building and installing the app on the device (cd android && gradlew.bat installDebug)...
.
.
.
BUILD SUCCESSFUL
Total time: 19.304 secs
Starting the app on emulator-5554 (C:\Users\<user>\AppData\Local\Android\sdk/platform-tools/adb -s emulator-5554 shell am start -n com.awesomeproject/.MainActivity)...
Starting: Intent { cmp=com.awesomeproject/.MainActivity }

可悲的是,模拟器然后给了我:

“Could not get BachedBridge, make sure your bundle is packaged correctly”

因此,有一些说明声明您必须更改模拟器上的端口,但我使用运行Marshmellow的Nexus 5并且无法找到该设置:

     You will also need to update your applications to load the JavaScript bundle
     from the new port. Open the in-app Developer menu, then go to Dev Settings → Debug
 server host for device and replace 8081 with your port of choice.

任何人都知道如何设置模拟器以识别打包器?

3 个答案:

答案 0 :(得分:1)

遗憾的是,Rect本机错误消息不是用户友好的。 :(

错误“无法获取BachedBridge,请确保您的捆绑包已正确打包”表示您的设备未连接到您的系统。

基本上,当我们启动react-native时它会将东西部署到移动设备/模拟器中,但是当应用程序在移动设备/模拟器中运行时,它不知道从哪里获取代码内容,例如,assests,bundle packages等。

所以,我们需要告诉模拟器,老板请从blahblah服务器中选择你所有的东西。 我们必须完全按照你在问题中提到的那样做。

  

打开应用程序内的Developer菜单,然后转到Dev Settings→Debug server host for device

好的,我们需要做两件事:

  1. 在模拟器中打开开发人员菜单:

    开发人员菜单是一个模式弹出窗口,包含一系列选项,例如Reload,Debug JS Remotely,Enable Live Reload,Enable Hot Reload,Toggle Inspector ..., Dev Setting (这是一个我们感兴趣)。 有很多方法可以做到这一点(如下所述),看看哪些方法适合你

    • 如果您是Mac用户,只需按CMD + M.它将为您打开一个弹出窗口
    • 如果您是非Mac,请尝试CTRL + M
    • 有些人按F2工作。 “fn + F2”
    • 如果您感到沮丧并且没有任何效果,请尝试在终端中运行以下命令(显然在模拟器启动时)Running on Device
    adb shell input keyevent 82
    
  2. 设置开发设置 - &gt;调试到设备的服务器主机和端口**

    打开Developer Menu后,导航到“Dev Settings - &gt; Debug to server host and port for device”。

    这个地方是解决问题的圣杯。

    获取您已启动react-native(即8088)的机器IP地址和端口,然后输入此处。它看起来像“192.168.1.105:8088”。 Checkout the image link here

    单击“确定”并重新加载应用程序(按两次R键或单击“开发人员菜单”中的“重新加载”),然后就可以了。

答案 1 :(得分:0)

我遇到了类似的问题,因为即使我的Windows笔记本电脑上安装了McAfee。按照下面提到的步骤为我解决了这个问题:

1)导航到项目根目录,并通过在server.js中对此值进行硬编码,在另一个端口上启动react-native(请参阅this answer

react-native start

2)现在,在根目录中打开另一个命令提示符实例,然后依次运行以下命令(可选择使用以下命令创建bat文件,然后将其放在根目录下)。请使用适当的值替换仿真器的端口号(在我的情况下为5554)和反应本机服务器(在我的情况下为8088)的端口号。

adb -s emulator -5554 reverse tcp:8088 tcp:8088
node node_modules/react-native/local-cli/cli.js bundle --platform android --dev true --reset-cache --entry-file index.android.js --bundle-output android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest android/app/build/intermediates/res/merged/debug
cd android && gradlew.bat installDebug

节点命令由sumit6b

解释

3)执行上述命令后,react-native服务器会抛出错误并停止,但是,apk文件将安装在我们的AVD中。该文件的名称将与我们项目的名称相同。在AVD中手动打开此文件。当应用程序打开时,我们可以通过按 Ctrl + M 来访问开发设置。在这里,转到调试服务器主机&amp;设备的端口和localhost中的类型:8088(根据需要用适当的端口号替换)并点击OK。现在,再次重复步骤1和2. 这次反应原生服务器不会终止。关闭之前打开的应用,然后再次在AVD中手动打开应用。应该说“获取JS包”,反应原生服务器应该说“转换文件”

4)此时,您的react-native服务器和AVD将同步。您可以通过在index.android.js中进行一些更改来验证这一点,然后在模拟器中点击R。

5)如果您仍然遇到任何问题,请尝试在Debug服务器主机&amp;中更改localhost和您机器的IP地址。 AVD中存在设备设置的端口。

答案 2 :(得分:0)

您可以在另一个端口上使用以下命令运行packager react-native start --port = 8082

或者您可以找到使用端口8081的进程 netstat -a -b -o

netstat给你进程的PID。杀死那个过程 taskkill / F / pid 8081

如果您使用物理设备,请在运行前卸载应用程序 react-native run-android