React native ERROR Packager无法侦听端口8081

时间:2017-04-15 11:54:59

标签: react-native

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

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

我使用资源监视器查看端口,但是我找不到8081,没有8081,有人可以教我如何找到它吗?提前致谢。 enter image description here

13 个答案:

答案 0 :(得分:114)

在Mac上,运行以下命令以查找使用端口select username,password,enabled from users where username = ? 的进程的ID 8081
然后运行以下命令终止进程:
sudo lsof -i :8081

以下是它的样子 enter image description here

答案 1 :(得分:91)

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

let a: NSNumber! = nil
if let b = a as Double? { }

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

$ react-native start --port=8088

Netstat为您提供了一个PID,可用于终止该过程。

$ netstat -a -b -o

答案 2 :(得分:30)

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

使用此端口的所有进程
lsof -i :8081  

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

终止节点进程
kill -9 <PID>  

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

答案 3 :(得分:17)

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

$ adb reconnect

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

$ adb reverse tcp:8081 tcp:8081

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

或者,可以尝试

$ killall node

答案 4 :(得分:6)

点击终端并输入

fuser 8081/tcp

您将获得使用端口8081的进程ID 现在杀死进程

kill <pid>

答案 5 :(得分:3)

  

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

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

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

如果要通过外科手术准确清除端口8081上的Metro Bundler垃圾,请执行 RC_02 中答案中的步骤,

killall -9

(其中23583是进程ID)

答案 6 :(得分:2)

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

答案 7 :(得分:1)

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

react-native run-android --port=3131

答案 8 :(得分:1)

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

答案 9 :(得分:0)

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

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

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

在终端“ react-native run-android

答案 10 :(得分:0)

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

执行sudo lsof -i 8081,如果此命令提供了输出,则可以使用以下命令将其杀死 sudo launchctl remove com.mcafee.agent.macmn。之后,再次启动打包程序。

答案 11 :(得分:0)

首先,在您的设备中转到 Dev。选项->网络上的ADB 完成之后:

$ adb connect <your device adb network>
$ react-native run-android 

(顺便说一下,或者是run-ios)

如果成功,则您的设备已安装了app-debug.apk, 打开应用程序调试,然后转到 Dev。设置->调试设备的服务器主机和端口, 输入机器的IP地址(通常为系统偏好设置->网络),如下面的示例<机器的IP地址> :8081 (没有不平等)

最后,执行以下命令

$ react-native start --port=8081

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

答案 12 :(得分:0)

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