情况:
我正在使用LTS版本的node,即node @ 8,并通过自制软件将其安装在macOS High Sierra上。它带有自己的npm
版本,即npm v5.6.0
。
当我输入which node
时,我还会得到/usr/local/opt/node@8/bin/node
包内的npm版本的node@8
。
当我运行npm install -g npm
时,控制台输出:
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
+ npm@6.3.0
added 1 package and updated 3 packages in 9.884s
...但是npm --version
仍然显示我在5.6.0
上。
问题:
鉴于此,我如何使用自制软件或npm,独立于npm
将6
更新到版本node
?
答案 0 :(得分:0)
简短版本:
确保usr/local/bin
中/usr/local/opt/node@8/bin
出现在PATH
的前面。
长版:
在安装node@8
时,出于某种原因,我将export PATH=/usr/local/opt/node@8/bin:$PATH
添加到了我的.bash_profile
(或者在您的情况下,可能是.bash_rc
)中,将/usr/local/opt/node@8/bin
放在了>开始,即我的PATH的前几项是:usr/local/opt/node@8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ...
。
在这种情况下,npm
首先在/usr/local/opt/node@8/bin
中搜索可执行文件(并发现/usr/local/opt/node@8/bin/npm
指向版本5),然后再在/usr/local/bin
中进行搜索。 /usr/local/bin/npm
(指向版本6)。
因此,我从export PATH=/usr/local/opt/node@8/bin:$PATH
中删除了.bash_profile
。我还可以将.bash_profile
中的条目更改为export PATH=$PATH:/usr/local/opt/node@8/bin
,该条目将/usr/local/opt/node@8/bin
附加到PATH的 end 而不是将其添加到PATH的开头
现在npm
首先在/usr/local/bin
中搜索可执行文件,并找到版本6。
感谢@OrtomalaLokni将我指向您评论中的PATH。
附加说明:由于/usr/local/opt/node@8/bin
为 node 创建了一个符号链接,因此无需在PATH中添加brew link node@8
,运行{ {1}},即ls -lh /usr/local/bin/npm
指向/usr/local/bin/node
。
现在我已经不记得为什么我最初将/usr/local/opt/node@8/bin/node
添加到PATH了。