当我运行命令时react-native start
,它显示Packager can't listen on port 8081
。
我知道问题与使用我的端口8081的软件有关。
我使用资源监视器查看端口,但找不到8081,没有8081
有人可以告诉我如何找到它吗?
Answers:
您可以在另一个端口上运行打包程序。
$ react-native start --port=8088
或者,找出通过netstat在Windows上使用哪些端口。
$ netstat -a -b -o
Netstat为您提供一个PID,您可以使用它来终止进程。
$ taskkill /pid 1234
由于某些进程已经在8081端口上运行,因此将出现此错误。停止该过程,然后运行您的命令,它将运行您的代码。对于此第一个列表,请键入以下所有使用此端口的进程:
lsof -i :8081
该命令将列出该进程的进程ID(PID),然后通过使用以下命令杀死该节点进程
kill -9 <PID>
PID是节点进程的进程ID。
该图片确实表明您的8081未使用。如果上述建议仍无济于事,并且您的移动设备通过USB连接到了计算机(并且您使用的是Android 5.0(棒棒糖)或更高版本),则可以尝试:
$ adb reconnect
在大多数情况下,这不是必需的,但以防万一,让我们重置与手机的连接并重新启动adb服务器。最后:
$ adb reverse tcp:8081 tcp:8081
因此,每当您的移动设备尝试访问其自身上的任何端口8081时,它将被路由到PC上的8081端口。
或者,可以尝试
$ killall node
Ubuntu / Unix和&MacOS
我的Metro Bundler卡住了,正在运行许多节点进程,但是除了react-native之外,我没有进行任何其他开发,所以我运行了:
$ killall -9 node
Metro Bundler默认情况下通过端口8081上的节点运行,有时会遇到卡住的问题(通常是由于在连续热加载的情况下快速连续按CTRL+ S)。如果按CTRL+C取消该react-native run-android
过程,您会突然遇到不好的时光,因为它react-native-run-android
会卡在:
Scanning folders for symlinks in /home/poop/dev/some-app/node_modules (41ms)
固定:
$ killall -9 node
$ react-native run-android
注意:如果您当时正在开发其他应用程序,则杀死所有节点处理程序可能会中断它们或您正在运行的任何基于节点的服务,因此请注意的广泛性killall -9
。如果您没有运行基于节点的数据库或应用程序,或者不介意手动重新启动它们,那么您应该很好。
我将这个详细的答案留在这个半不相关的问题上的原因是,我的解决方案是一个常见的半相关问题的解决方案,可悲地需要2步来解决,但幸运的是只需2步就可以恢复工作。
如果要通过外科手术准确清除端口8081上的Metro Bundler垃圾,请执行RC_02回答中的步骤,这些步骤是:
$ sudo lsof -i :8081
$ kill -9 23583
(其中23583是进程ID)
检查您的计算机上是否已在运行节点服务器,然后将其关闭。
为了解决此问题,我在下面提到了该过程。
请通过CTRL + C或CMD + C取消当前的“ react-native run-android”进程
关闭自动打开的Metro bundler(终端)窗口命令行。
在终端“ react-native run-android”上再次运行命令
首先,在您的设备中转到Dev。选项->完成 后通过网络进行ADB:
$ adb connect <your device adb network>
$ react-native run-android
(或者说是run-ios)
如果成功完成,则您的设备已安装app-debug.apk,请打开app-debug并转至Dev。设置->调试设备的服务器主机和端口,输入您机器的IP地址(通常是系统偏好设置->网络),如下面的示例<您的机器的IP地址> :8081(不等式)
最后,执行以下命令
$ react-native start --port=8081
请尝试其他端口,并确认您的计算机和设备是同一网络。