我正在尝试使用 React Native 启动并运行,我在 Xcode 中看到以下消息:
端口 8081 已在使用中,打包程序未运行或未正确运行
命令 /bin/sh 失败,退出代码为 2
我去了React Native 故障排除页面并试图杀死端口 8081 进程,但我仍然遇到同样的问题。
这是我在 Xcode 中看到的屏幕截图:
任何帮助将不胜感激。
我正在尝试使用 React Native 启动并运行,我在 Xcode 中看到以下消息:
端口 8081 已在使用中,打包程序未运行或未正确运行
命令 /bin/sh 失败,退出代码为 2
我去了React Native 故障排除页面并试图杀死端口 8081 进程,但我仍然遇到同样的问题。
这是我在 Xcode 中看到的屏幕截图:
任何帮助将不胜感激。
如果您按照Facebook 故障排除页面中的lsof -n -i4TCP:8081
建议进行操作,但结果为空,请使用.sudo lsof -n -i4TCP:8081
就我而言,事实证明 McAfee 防病毒软件正在运行侦听该端口的进程。杀死那个过程(我知道,我知道!)解决了这个问题。
对于需要将端口 8081 更改为其他端口的用户,请尝试以下步骤。
> npm start
将启动node_modules/react-native/packager/packager.sh
在那里它将合并命令行参数,即 --port 到预定义的选项中。即端口=8081
我更新了 package.jsonstart
选项以包含我的首选端口,因为我无法停止使用此端口的现有服务。
{
"name": "AwesomeProject",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node_modules/react-native/packager/packager.sh --port=8999"
},
"dependencies": {
"react-native": "^0.12.0"
}
}
** 请注意,这可能不适用于显然硬编码为 8081 Stack Post Here的 android
构建 Xcode 在构建 Xcode 时,它仍然会失败,因为它会尝试运行脚本来启动节点。您将需要从构建过程中删除此脚本或将其更新到新端口。
在libraries
选择下React.xcodeproj
。在主屏幕中选择Build Phases
。你会看到Run Script
。
删除此条目,调用npm start
您自己,或编辑端口。
if nc -w 5 -z localhost 8999 ; then
if ! curl -s "http://localhost:8999/status" | grep -q "packager-status:running" ; then
echo "Port 8999 already in use, packager is either not running or not running correctly"
exit 2
fi
else
open $SRCROOT/../packager/launchPackager.command || echo "Can't start packager automatically"
fi
调试 似乎 8081 到处都是。需要额外更新xcode-project下的RCTWebSocketExecutor.m:Libraries/RCTWebSocket.xcodeproj
- (instancetype)init
{
return [self initWithURL:[RCTConvert NSURL:@"http://localhost:8999/debugger-proxy"]];
}
** 从 iOS 启动打包程序 ** 如果仅从 iOS 启动,那么您还需要编辑 launchPackager.command 以添加适当的端口,因为 Xcode 使用此文件来运行 javascript。
$THIS_DIR/packager.sh --port=8999
简单的方法: 尝试使用以下代码
kill -9 $(lsof -t -i:8081)
有同样的问题!
对于 Android,我可以使用adb 重定向端口,但在 iOS 中,无法找到在自定义端口中运行 React Native 的方法。必须从 McAfee 接管 8081 端口。
对于无法直接杀死 McAfee 进程/服务的 Mac 用户,您可以通过launchctl
(macOS) 将其卸载,然后您可以在默认的 8081 端口上运行打包服务器。
cd /Library/LaunchDaemons
sudo launchctl unload com.mcafee.agent.macmn.plist
还写了一个备忘录来解释launchctl的细节和MacOS的启动流程。
在其他人的答案的帮助下。我尝试了以下步骤。它对我有用,希望对其他人有用。它仅适用于 iOS。 假设我们要将8081 端口更改为 8999 端口。
首先,打开 Xcode。
查看 [ProjectName]/[ProjectName]/AppDelegate.m 中的 Project navigator(left):
改变
http://localhost:8081/index.ios.bundle?platform=ios&dev=true
到
http://localhost:8999/index.ios.bundle?platform=ios&dev=true
在项目导航器(左)[项目名称]/库中:
单击“React.xcodeproj”。在主面板上,单击“构建阶段”标签。
展开“运行脚本”,用叉号将其删除。
在 Project navigator(left) [ProjectName] / Libraries / RCTWebSocket.xcodeproj / RCTWebSocketExecutor.m 中:搜索 8081 并将其替换为 8999
第二个打开的 Finder
在项目根目录中,打开“package.json”:
将“脚本”属性更改为:
{...
"start": "node_modules/react-native/packager/packager.sh --port=8999"
...
}
然后打开终端
$cd 到项目根目录:
$ npm 开始
凉爽的!然后
返回Xcode 并单击播放按钮。
交叉你的手指。
耐心点。客户端会出现空白。
您可以看到它正在后端构建(终端将记录它)。
运行以下命令:
反应原生开始--port = 8088
我在 8081 上运行 McAfee 时遇到了同样的问题。这对我有用。
https://facebook.github.io/react-native/docs/troubleshooting.html
我发现了这个问题:由于某种原因,我没有终止进程port 8081
,它导致 Xcode 失败。
解决方案:
port 8081
。Xcode Menu > Product > Clean
:.资源:
在“react”16.8.6 和“react-native”中:“0.60.5”
转到 [YOURPROJECT] > ios > [YOURPROJECT].xcodeproj > project.pbxproj
将 RCT_METRO_PORT 更改为您的端口(例如:8089)
清洁和建造。它应该工作。
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8089}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
更新:
“反应”:“16.8.3”,“反应原生”:“0.59.8”,
node_modules > react-native > React > React.xcodeproj
将端口从 8081 更改为 8082
在 react-native 的其他版本中,搜索字符串RCT_METRO_PORT
或already in use,
. 在找到的结果中,将端口从 8081 更改为所需的端口(例如:8082)。
我的问题是Wifi DNS设置..
一世。转到设置->网络。
ii. 选择已连接的 Wifi,点击Advance。
iii. 选择DNS,您可能已将 DNS 服务器设置为8.8.8.8(天知道您的意图;))。删除它并将其设置为默认值192.168.1.1。单击确定。
iv. 在终端中运行react-native run-ios就可以了。
我有同样的问题运行react-native run-ios ----port=8088
对我有用,还没有尝试 android
我刚遇到同样的问题,发现 Docker 使用的是 8081 端口。
因此,如果你需要使用 React Native 调试东西,你需要停止 docker,如果它使用相同的端口。
以下步骤适用于我在 iOS 和 XCode 10.1 上运行 react-native 代码
npm install @babel/runtime --save-dev
react-native run-ios --port=8088
。这将在 8088 端口中运行打包程序。