安装expo-cli遇ERESOLVE依赖树解析错误,安装成功后expo命令无法识别的问题求助
先聊聊你遇到的依赖冲突问题
你看到的ERESOLVE unable to resolve dependency tree错误,是npm 7及以后版本的默认严格检查机制导致的——它会强制校验peer依赖的版本兼容性。在你的场景里,expo-cli@4.4.7依赖的boxen@4.1.0需要type-fest@0.5.2,但另一个依赖@pmmmwh/react-refresh-webpack-plugin@0.3.3要求的peer可选依赖是type-fest@0.13.1,两个版本不兼容就触发了冲突。你改用--legacy-peer-deps参数是正确的选择,这个参数会让npm回到v6的peer依赖处理逻辑,忽略这类版本冲突,所以安装能顺利完成。
为什么会出现"bash: expo: command not found"?
这个问题核心是系统的PATH环境变量里找不到expo命令的执行路径,分两种常见情况:
情况1:你是本地安装expo-cli(没加-g参数)
如果安装时没加-g,expo-cli会被安装在当前项目的node_modules/.bin目录下,而这个目录默认不在系统PATH里,直接敲expo命令自然找不到。
解决办法:
- 用
npx来执行命令:npx expo init myapp,npx会自动定位到本地node_modules/.bin里的expo命令。
情况2:你是全局安装expo-cli(加了-g参数)
全局安装的话,expo命令应该在npm的全局bin目录中,但这个目录可能没被添加到你的PATH环境变量里。
解决步骤:
先找到npm全局bin目录的路径:
执行命令:npm config get prefix输出的路径比如是
/usr/local(系统级)或者~/.npm-global(用户级),对应的bin目录就是/usr/local/bin或者~/.npm-global/bin。检查这个bin目录是否在PATH里:
执行:echo $PATH看看输出内容里有没有刚才找到的bin目录路径。
如果不在PATH里,手动添加:
- 若使用bash,编辑
~/.bashrc或~/.bash_profile文件,添加一行:export PATH="$(npm config get prefix)/bin:$PATH" - 若使用zsh,编辑
~/.zshrc文件,添加同样的内容。 - 保存文件后,执行
source ~/.bashrc(或对应的配置文件)让修改立即生效。
- 若使用bash,编辑
验证:
执行expo --version,如果能正常输出版本号就说明问题解决了,之后再执行expo init myapp即可。
额外建议
如果你安装的是旧版本expo-cli,建议尝试安装最新版,能避免更多潜在的依赖冲突:
npm install -g expo-cli@latest --legacy-peer-deps
内容的提问来源于stack exchange,提问作者Billjesh Baidya

