React Native项目eject后执行npm start终端无QRCode显示求助
解决Create React Native App Eject后npm start不显示QR码的问题
我懂你这种困惑!之前用create-react-native-app创建的项目明明npm start能正常显示QR码,执行npm run eject之后就没了,确实挺闹心的。让我给你捋清楚原因和解决办法:
为什么QR码会消失?
当你执行npm run eject时,你的项目会从Expo托管工作流切换到裸工作流(或纯React Native项目):
- 原来的
npm start调用的是Expo CLI的启动命令,它会生成供Expo Go扫描的QR码,方便快速在设备上运行; - 而eject之后,package.json里的
start脚本会被替换成react-native start——这是启动Metro Bundler(React Native的打包工具)的命令,它默认不会显示QR码,因为裸工作流更偏向于通过原生开发工具(Xcode/Android Studio)或专用的运行命令来启动应用。
具体解决办法
方案1:用Expo CLI启动,找回QR码
如果你还是想通过QR码在Expo Go里运行项目(适用于Expo裸工作流),可以这么做:
- 先确保全局安装了Expo CLI:
npm install -g expo-cli - 用Expo的命令启动项目:
执行完这个命令,终端就会重新显示QR码,你可以用手机上的Expo Go扫描它来运行应用。expo start
方案2:适配纯React Native项目的启动方式
如果你已经完全切换到纯React Native项目(没有Expo依赖),QR码其实不是必需的,你可以用原生项目的启动命令:
- 针对iOS设备/模拟器:
这个命令会自动启动iOS模拟器,同时连接Metro Bundler;如果要在真机运行,记得提前在Xcode里配置好签名。react-native run-ios - 针对Android设备/模拟器:
同样会启动Android模拟器或连接真机,启动后摇晃设备打开开发者菜单,就能确认Metro的连接地址是否正确。react-native run-android
方案3:修改package.json脚本(一劳永逸)
如果你想让npm start直接回到显示QR码的状态,可以修改package.json里的scripts部分,把start命令改成调用Expo CLI:
"scripts": { "start": "expo start", // 其他脚本(比如android、ios等)保持不变即可 }
修改之后,再执行npm start就会自动调用Expo CLI,终端也会显示QR码了。
内容的提问来源于stack exchange,提问作者Morton
相关产品推荐
相关产品推荐

