【问题标题】:Homebrew: Install latest npm version next to node@8Homebrew:在 node@8 旁边安装最新的 npm 版本
【发布时间】:2018-08-10 07:01:48
【问题描述】:

情况

我正在使用节点的 LTS 版本,即 node@8 并在 macOS High Sierra 上使用自制软件安装它。它带有自己的npm 版本,即npm v5.6.0

当我输入 which node 时,我还会得到 /usr/local/opt/node@8/bin/node,这是 node@8 包中的 npm 版本。

当我运行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

问题

鉴于此,我如何使用 homebrew 或 npm 将 npm 更新到版本 6 独立于 node

【问题讨论】:

  • echo $PATH 的输出是什么?
  • @OrtomalaLokni 我的echo $PATH 输出的开头是/usr/local/opt/node@8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin。我现在确保usr/local/opt/node@8 出现在我的PATH 中/usr/local/bin 之后,现在我在运行npm --version 时得到6.3.0。谢谢! :-) 我会做出适当的答复。

标签: node.js npm homebrew


【解决方案1】:

短版

确保usr/local/bin 在您的PATH 中出现在/usr/local/opt/node@8/bin 之前。


加长版

在安装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 中搜索可执行文件(并找到指向版本 5 的 /usr/local/opt/node@8/bin/npm),然后在 /usr/local/bin 中搜索它会找到 /usr/local/bin/npm(指向版本6).

所以我从.bash_profile 中删除了export PATH=/usr/local/opt/node@8/bin:$PATH。我也可以将.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 添加到PATH,因为brew link node@8 会为node 创建一个符号链接,在运行ls -lh /usr/local/bin/npm 时可以观察到该符号链接,即也就是说,/usr/local/bin/node 指向/usr/local/opt/node@8/bin/node

现在我不记得为什么我最初将 /usr/local/opt/node@8/bin 添加到 PATH。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2022-12-17
    • 2019-05-16
    相关资源
    最近更新 更多