Mac OS X系统中NVM安装Node后无法使用全局模块求助
解决NVM环境下全局Express命令无法使用的问题
兄弟,我一眼就看出你踩了两个常见坑——Express版本拆分的变化,加上NVM全局包路径的配置问题,咱们一步步来搞定:
核心原因先搞懂
从Express 4.0版本开始,官方把项目初始化的命令行工具单独拆分到了express-generator包里,你直接全局安装express本身是得不到express命令的;再加上NVM管理的Node,全局包的bin目录需要手动确认是否在环境变量里,不然系统找不到对应的可执行文件。
第一步:卸载错误的包,安装正确的命令行工具
先把之前装的全局Express卸载:
npm uninstall -g express
然后安装专门的命令行生成器:
npm install -g express-generator
第二步:确认NVM全局包的bin目录已加入环境变量
NVM每个Node版本的全局包都是独立的,对应的bin目录需要在PATH里才能被系统识别:
先找到当前Node版本的全局包根路径:
npm root -g输出大概是
/Users/你的用户名/.nvm/versions/node/v9.2.0/lib/node_modules,对应的bin目录就是这个路径的上一级bin,也就是/Users/你的用户名/.nvm/versions/node/v9.2.0/bin检查这个路径是否在环境变量里:
echo $PATH如果没看到,就把它加到你的shell配置文件里(比如
.bash_profile或.zshrc,取决于你用的shell):- 打开配置文件:
# 如果你用bash open ~/.bash_profile # 如果你用zsh open ~/.zshrc - 添加一行配置(也可以用动态路径,换Node版本时自动适配):
export PATH="$(npm root -g)/../bin:$PATH" - 保存后刷新配置:
# bash用户 source ~/.bash_profile # zsh用户 source ~/.zshrc
- 打开配置文件:
第三步:验证是否生效
现在打开新终端,执行:
express -V
如果能显示express-generator的版本号,就说明问题解决了!
小贴士:之后如果用NVM切换Node版本,记得重新全局安装一次
express-generator,因为每个Node版本的全局包是独立的。
内容的提问来源于stack exchange,提问作者Walter_Wally
相关产品推荐
相关产品推荐

