zsh下全局安装npm包后提示command not found如何解决
问题根因
macOS升级后默认zsh配置会重置,npm全局安装包生成的可执行文件所在目录,没有被加入zsh的PATH环境变量检索列表,就会触发command not found报错;另外还有高概率踩坑点:npm全局包的执行命令名不一定和包名完全一致,很多人会搞错命令名。
解决步骤
- 先确认npm全局可执行文件的实际存放路径,执行命令:
输出的路径下的npm config get prefixbin目录,就是所有npm全局包的可执行文件存放位置:- 官网安装包安装的Node,默认输出
/usr/local,对应bin路径为/usr/local/bin - Apple Silicon芯片Mac用Homebrew安装的Node,默认对应bin路径为
/opt/homebrew/bin - nvm等版本管理器安装的Node,路径格式为
~/.nvm/versions/node/[你的node版本号]/bin
- 官网安装包安装的Node,默认输出
- 先验证对应可执行文件是否存在,同时确认正确命令名,执行:
输出的文件名就是实际可执行的命令名,@wicked/cli的默认命令一般是ls $(npm config get prefix)/bin | grep wickedwicked,不是你试的wicked-cli,可以先直接敲wicked看能不能正常运行,排除命令名写错的问题。 - 把查到的npm全局bin路径加入zsh配置:
打开zsh配置文件:
在文件末尾追加一行,把下面的路径替换成你第一步查到的实际bin路径,例如:nano ~/.zshrc
写完按export PATH="$PATH:/usr/local/bin"Ctrl+O,按回车确认保存,再按Ctrl+X退出编辑器。 - 让配置立即生效,执行:
之后再执行正确的wicked命令即可正常运行。source ~/.zshrc
排查补充
- 如果配置完还是报错,执行
echo $PATH,确认你添加的bin路径确实出现在输出内容里,没有拼写错误 - 不要随意把陌生目录加入PATH,只添加你实际查询到的npm全局bin目录即可
- 如果之前用sudo执行过全局npm安装,可能会导致权限异常,后续全局装包尽量不要加sudo,避免路径混乱
内容的提问来源于stack exchange,提问作者user1712638
相关产品推荐
相关产品推荐

