由于端口 8081 sunproxyadmin,无法打包 react native

Can't package react native because of port 8081 sunproxyadmin

当我在终端中 运行 时:

lsof -n -i4TCP:8081

我明白了

node      10901 me   28u  IPv6 0xbcad49      0t0  TCP *:sunproxyadmin (LISTEN)
foo 11957 me   15u  IPv4 0xbcad49      0t0  TCP 127.0.0.1:61127->127.0.0.1:sunproxyadmin (CLOSE_WAIT)

这个 sunproxyadmin 是什么?

根据 http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=8081,TCP 端口 8081 是 sunproxyadmin 的众所周知的端口,就像 80 是 http 的众所周知的端口一样。在这种情况下,您有一个正在侦听端口 8081 的节点进程,但 lsof 试图提供帮助并为此显示众所周知的端口。在linux下,这是在/etc/services中定义的;我希望 OS X 是相似的。

编辑 1:请注意,根据 Apple Man Pages,传递 -P

inhibits the conversion of port numbers to port names for network files.
Inhibiting the conversion may make lsof run a little faster. It is also useful when port name lookup is not working properly.

这应该会导致 lsof 不会打印出令人困惑的 sunproxyadmin,因为它恰好使用了 Sun 注册的端口。

编辑 2:您的响应中的第二列(例如第一行中的 10901,这是您想要的,第二行中的 11957)应该是进程 ID。如果你做 ps aux | grep 10901(或 ps elf | grep [pid],因为我不记得哪个适用于 OSX 并且手边没有它)你应该得到类似的东西:

apache 19783 0.0 0.2 251888 8580 ? S Oct07 0:00 /usr/sbin/httpd -DFOREGROUND

(或编造一些东西:

nodeuser 10901 0.0 0.2 251888 8580 ? S Oct07 0:00 node index.js

)

您可以使用 kill -9 10901(或任何 PID)终止它,但如果它是 运行 作为服务或其他什么,您可能会发现它会回来。

这足以添加到您的 bash 个人资料中:

function findbyport()
{
  sudo lsof -P -iTCP: -sTCP:LISTEN
}

如果你不想杀死 sunproxyadmin 进程,让我们尝试使用命令在不同的端口启动 React native: react-native start --port your_port

然后打开Dev settings(见how to open dev menu),修改Debug server host & port for device为:your_local_ip:your_port

杀掉它,在你的终端中执行

sudo lsof -i :8081

从那里获取 PID 编号,然后 运行

kill -9 <PID NUMBER>

您可以查看 FB documentation 了解更多信息

我的 Mac 上有这个 MACAFEE 杀毒软件 运行。 我能杀了它(虽然我不应该杀它,但我试过了,看起来它永远不会死!Sudo毕竟没有力量!)。所以经过很多的研究我试过这个。

步骤 1: 获取进程的 PID 须藤 lsof -n -i4TCP:8081 第 2 步:找到 launchd 端点 sudo launchctl 列表 | grep 第 3 步:删除 mcafee sudo launchctl remove com.mcafee.agent.macmn

如果这个对你有用,请对我说谢谢,还有https://fantashit.com/unable-to-perform-react-native-start/