Mac下npm更新成功但仍显示旧版本问题求助
解决npm更新后全局版本仍为旧版的问题
这问题我之前折腾npm全局安装的时候也碰到过,核心原因是系统环境变量PATH中,旧版本npm的路径优先级比你新安装的更高。下面一步步给你解决:
问题原因拆解
你执行which npm得到/usr/local/bin/npm,说明终端在查找npm命令时,先找到了这个路径下的旧版本;而你新安装的npm在/Users/ariful.haque/.npm-global/bin,这个路径没排在PATH的前面,所以全局调用时默认用旧版。直接指定路径能拿到新版,也印证了这一点。
解决方案
方法一:永久修改PATH(推荐)
这个办法能让每次打开终端都自动用新版npm:
- 打开你的shell配置文件:
- 如果你用的是Bash,编辑
~/.bash_profile或~/.bashrc - 如果你用的是Zsh(现在Mac默认Shell),编辑
~/.zshrc
- 如果你用的是Bash,编辑
- 在文件末尾添加一行代码:
这行代码的作用是把新npm的路径放到export PATH="/Users/ariful.haque/.npm-global/bin:$PATH"PATH的最前面,让系统优先查找这个路径下的命令。 - 保存文件后,执行以下命令让配置立即生效:
- Bash:
source ~/.bash_profile(或source ~/.bashrc) - Zsh:
source ~/.zshrc
- Bash:
- 验证:执行
which npm,应该返回/Users/ariful.haque/.npm-global/bin/npm,再执行npm -v就能看到正确的6.0.1版本了。
方法二:临时生效(仅当前终端会话)
如果只是临时想用新版npm,直接在终端执行:
export PATH="/Users/ariful.haque/.npm-global/bin:$PATH"
执行完就能正常用新版了,但重启终端后会回到原来的状态。
额外校验:确认npm全局前缀
为了避免以后再出现类似问题,建议检查npm的全局安装路径设置:
执行npm config get prefix,正常应该返回/Users/ariful.haque/.npm-global。如果不是的话,执行以下命令设置:
npm config set prefix "/Users/ariful.haque/.npm-global"
这样以后用npm install -g安装的包都会放到这个路径下,不会再出现路径冲突。
内容的提问来源于stack exchange,提问作者Ariful Haque
相关产品推荐
相关产品推荐

