Windows环境下运行npx expo start --tunnel报错"The system cannot find the path specified"求助
问题描述
我现在在Windows上用Expo开发React Native应用,之前跑npx expo start --tunnel完全没问题,但自从装了react-native-paper库之后,就开始报下面的错:
Starting project at D:\Project\react_native Starting Metro Bundler Error: The system cannot find the path specified. Error: The system cannot find the path specified. at notFoundError (D:\Project\react_native\node_modules\cross-spawn\lib\enoent.js:6:26) at verifyENOENT (D:\Project\react_native\node_modules\cross-spawn\lib\enoent.js:40:16) at ChildProcess.cp.emit (D:\Project\react_native\node_modules\cross-spawn\lib\enoent.js:27:25) at Process.ChildProcess._handle.onexit (node:internal/child_process:294:12)
但如果不加tunnel选项,直接执行npx expo start就一切正常。我已经试过这些方法都没解决:
- 在PowerShell和cmd.exe里都试过运行命令
- 用
npx expo start -c清除Expo缓存 - 把Expo CLI更到最新版本
- 检查过防火墙和杀毒软件的设置
- 手动安装了
@expo/ngrok:npm install @expo/ngrok
解决方案
嘿,我之前也在Windows上碰到过几乎一模一样的问题,给你几个亲测有效的排查和解决方向:
先排查ngrok的可用性
用--tunnel的时候Expo依赖@expo/ngrok来建隧道,你先手动验证下ngrok能不能正常跑:在终端里输入npx ngrok version,如果也报找不到路径的错,说明ngrok的安装有问题。试试彻底卸载重装:npm uninstall @expo/ngrok npm install @expo/ngrok --save-dev另外可以去项目的
node_modules/.bin目录看看有没有ngrok.cmd文件,要是没有的话,重装的时候注意看安装日志有没有报错。检查Node.js的安装路径
Windows下如果Node的安装路径带中文、空格或者特殊字符,会导致cross-spawn调用子进程时找不到路径。你打开系统环境变量,看看PATH里的Node路径是不是C:\Program Files\nodejs\(或者你的实际安装路径),确保路径里没有特殊字符。排查react-native-paper的依赖冲突
既然是装了这个库之后才出的问题,不排除依赖冲突的可能。你可以临时卸载它试试:npm uninstall react-native-paper npx expo start --tunnel如果卸载后能正常跑,那要么换个旧版本的
react-native-paper,要么等官方修复这个冲突。手动指定ngrok路径
你可以在项目的app.json或者app.config.js里手动指定ngrok的执行路径,比如:{ "expo": { "extra": { "ngrokPath": "./node_modules/.bin/ngrok.cmd" } } }配置完再跑
npx expo start --tunnel试试。
应该其中某个方法就能解决你的问题了,祝你好运!
内容来源于stack exchange

