React native ERROR Packager无法侦听端口8081

Mor*_*ton 69 react-native

当我命令时react-native start,它显示Packager can't listen on port 8081.

我知道问题是关于使用我的端口8081的一些软件.

我使用资源监视器来查看端口,但我找不到8081,没有8081,有人可以教我如何找到它吗?提前致谢. 在此输入图像描述

RC_*_*_02 124

在mac上,运行以下命令查找正在使用端口的进程的id 8081
sudo lsof -i :8081
然后运行以下命令终止进程:
kill -9 23583

这是它的样子 在此输入图像描述

  • 适用于ubuntu 18.04 (3认同)

Vik*_*Seč 97

您可以在另一个端口上运行打包程序.

$ react-native start --port=8088
Run Code Online (Sandbox Code Playgroud)

或者,找出使用netstat在Windows上使用哪些端口的内容.

$ netstat -a -b -o
Run Code Online (Sandbox Code Playgroud)

Netstat为您提供PID,您可以使用它来终止进程.

$ taskkill /pid 1234
Run Code Online (Sandbox Code Playgroud)


Pul*_*wal 32

此错误即将发生,因为某些进程已在8081端口上运行.停止该过程,然后运行您的命令,它将运行您的代码.对于第一个列表,通过键入使用此端口的所有进程

lsof -i :8081  
Run Code Online (Sandbox Code Playgroud)

此命令将列出进程的进程ID(PID),然后使用命令终止进程

kill -9 <PID>  
Run Code Online (Sandbox Code Playgroud)

这里PID是节点进程的进程ID.


Mio*_*vic 17

那张照片确实显示你的8081没有使用.如果上述建议没有帮助,并且您的移动设备通过USB连接到您的计算机(并且您拥有Android 5.0(Lollipop)或更高版本),您可以尝试:

$ adb reconnect
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这不是必需的,但为了以防万一,让我们重置您与移动设备的连接并重新启动adb服务器.最后:

$ adb reverse tcp:8081 tcp:8081
Run Code Online (Sandbox Code Playgroud)

因此,每当您的移动设备尝试访问自身的任何端口8081时,它将被路由到您PC上的8081端口.

或者,可以试试

$ killall node
Run Code Online (Sandbox Code Playgroud)


agm*_*984 9

Ubuntu/Unix && MacOS

我的 Metro Bundler 卡住了,有很多节点进程在运行,但除了 react-native 之外我没有任何其他开发正在进行,所以我跑了:

$ killall -9 node
Run Code Online (Sandbox Code Playgroud)

默认情况下,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)
Run Code Online (Sandbox Code Playgroud)

使固定:

$ killall -9 node

$ react-native run-android
Run Code Online (Sandbox Code Playgroud)

注意:如果您当时正在开发其他应用程序,杀死所有节点进程可能会中断它们或您正在运行的任何基于节点的服务,因此请注意killall -9. 如果您没有运行基于节点的数据库或应用程序,或者您不介意手动重新启动它们,那么您应该很高兴。

我在这个半无关的问题上留下这个详细答案的原因是,我的是一个常见的半相关问题的解决方案,可悲的是需要 2 个步骤来解决,但幸运的是只需要 2 个步骤即可恢复工作。

如果您想通过外科手术准确删除端口 8081 上的 Metro Bundler 垃圾,请执行RC_02中的答案中的步骤,它们是:

$ sudo lsof -i :8081

$ kill -9 23583
Run Code Online (Sandbox Code Playgroud)

(其中 23583 是进程 ID)


Nag*_*aba 7

您应该通过以下方式杀死在端口 8081 上运行的所有进程kill -9 $(lsof -i:8081)


For*_*kie 6

拿终端并输入

fuser 8081/tcp
Run Code Online (Sandbox Code Playgroud)

您将获得使用端口8081的进程ID现在终止进程

kill <pid>
Run Code Online (Sandbox Code Playgroud)