将Nuclide调试器附加到Expo本地服务器(19001端口)时出错求助
解决Nuclide调试Expo本地服务器时的
spawn react-native.cmd ENOENT错误 我之前调试Expo项目时也碰到过一模一样的错误,这个spawn react-native.cmd ENOENT本质是系统找不到react-native的可执行文件,下面是几个我亲测有效的解决方向,你可以挨个试试:
检查系统环境变量是否包含React Native CLI路径
ENOENT错误最常见的原因就是可执行文件不在系统PATH里。React Native的react-native.cmd(Windows)或者react-native(Mac/Linux)一般安装在全局npm目录下:- Windows路径:
%USERPROFILE%\AppData\Roaming\npm - Mac/Linux路径:
/usr/local/bin
你可以打开系统环境变量设置(Windows)或者在终端执行echo $PATH(Mac/Linux),确认这个路径是否存在。如果没有,添加后重启Nuclide和所有终端窗口再试。
- Windows路径:
全局安装React Native CLI
Expo项目默认依赖Expo CLI,但Nuclide的调试器可能还是会调用本地RN CLI。你可以尝试全局安装RN CLI:npm install -g react-native-cli # 或者用yarn yarn global add react-native-cli安装完成后重启Nuclide,再尝试附加调试器。
调整Nuclide的调试配置
Nuclide默认的React Native调试配置可能不适配Expo项目,你可以手动修改配置:- 打开Nuclide的Debug面板,点击右上角的配置图标
- 选择"React Native"类型的配置,修改
command字段为expo,而不是默认的react-native - 确认
port字段设置为19001,和你Expo本地服务器的端口一致
清理缓存并重启所有服务
缓存冲突也可能导致这类问题,按以下步骤操作:- 关闭Expo开发服务器和Nuclide
- 清除npm缓存:
npm cache clean --force - 清除Expo项目缓存:
expo r -c - 重新启动Expo服务器,再尝试用Nuclide附加调试
考虑Nuclide的兼容性问题
这里要提一下,Nuclide已经停止维护了,它对新版本的Expo、Node.js(你当前用的v8.10.0确实比较老旧)支持都不太好。如果上面的方法都无效,建议你迁移到VS Code+Expo官方插件的调试方案,这是现在Expo项目的主流调试方式,兼容性和稳定性都强很多。
内容的提问来源于stack exchange,提问作者Sterling Ryan
相关产品推荐
相关产品推荐

