React Native ERROR Packager无法在端口8081上侦听


84

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

我知道问题与使用我的端口8081的软件有关。

我使用资源监视器查看端口,但找不到8081,没有8081

有人可以告诉我如何找到它吗?

在此处输入图片说明


1
看一下这篇文章,您应该找到它。
Antoine Grandchamp

除了其他答案外,请确保Metro捆绑器尚未在某个长期被遗忘的终端Window某处运行。
Lurifaxel

Answers:


108

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

$ react-native start --port=8088

或者,找出通过netstat在Windows上使用哪些端口。

$ netstat -a -b -o

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

$ taskkill /pid 1234

146

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

这是它的样子 在此处输入图片说明


4
也可以在ubuntu 18.04上工作
theapache64

1
在MacOS High Sierra上也为我工作
Liran H

1
很好很好很好很好,谢谢。
Jeaf Gilbert

31

由于某些进程已经在8081端口上运行,因此将出现此错误。停止该过程,然后运行您的命令,它将运行您的代码。对于此第一个列表,请键入以下所有使用此端口的进程:

lsof -i :8081  

该命令将列出该进程的进程ID(PID),然后通过使用以下命令杀死该节点进程

kill -9 <PID>  

PID是节点进程的进程ID。


19

该图片确实表明您的8081未使用。如果上述建议仍无济于事,并且您的移动设备通过USB连接到了计算机(并且您使用的是Android 5.0(棒棒糖)或更高版本),则可以尝试:

$ adb reconnect

在大多数情况下,这不是必需的,但以防万一,让我们重置与手机的连接并重新启动adb服务器。最后:

$ adb reverse tcp:8081 tcp:8081

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

或者,可以尝试

$ killall node

9

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)


6

在终端上输入

fuser 8081/tcp

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

kill <pid>

3

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


2

检查您的计算机上是否已在运行节点服务器,然后将其关闭。


2

尝试在另一个端口(如3131)中运行。运行命令:

react-native run-android --port=3131

在我的情况下,McAfee正在使用此端口。如前所述,在其他端口中运行会有所帮助。
Muthu

1

这可能是因为McAfee使用该端口。简单做lsof -i 8081可能不会显示该应用程序,您可能必须对其进行sudo。

这样做sudo lsof -i 8081如果这个命令给出了一个输出,您可以通过杀死它 sudo launchctl remove com.mcafee.agent.macmn。之后,再次启动打包程序。


1

在我的情况下,模拟器上的互联网关闭,因为模拟器上没有wifi信号。重置模拟器已起作用。


0

为了解决此问题,我在下面提到了该过程。

请通过CTRL + C或CMD + C取消当前的“ react-native run-android”进程

关闭自动打开的Metro bundler(终端)窗口命令行。

在终端“ react-native run-android”上再次运行命令


0

首先,在您的设备中转到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

请尝试其他端口,并确认您的计算机和设备是同一网络。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.