当在OS X中使用一个新的终端会话时,nvm会忘记节点版本并默认为零:

$nvm ls:

         .nvm
     v0.11.12
     v0.11.13

我必须在每个会话中一直按nvm use v.0.11.13:

         .nvm
     v0.11.12
->   v0.11.13

我已经尝试了brew安装和官方安装脚本。

我的.profile为酿造版本:

#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

对于install.sh脚本:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

#nvm
export NVM_DIR="/Users/farhad/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

你知道我哪里做错了吗?


当前回答

正如在存储库的问题一节中提到的,nvm的使用仅适用于shell的生命周期。我发现这非常有用,但有时它可能会给你带来麻烦,实际上,当你工作在不同的代码库,需要不同版本的代码。 这是GitHub中相关讨论的链接

其他回答

我使用ZSH,所以我必须修改~/。zshrc中关于NVM的行如下所示:

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh

此外,如果你在nvm之前已经安装了节点,请检查~/。Bash_profile不包含如下内容:

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

如果你有它,注释/删除它,nvm应该开始处理默认的节点版本。

nvm通过改变PATH变量来完成它的工作,所以你需要确保在获取nvm.sh脚本后,你没有以某种方式将你的PATH更改为其他东西。

在我的例子中,nvm.sh在.bashrc中被调用,但随后PATH变量在.bash_profile中被更新,这导致我的会话在nvm节点之前找到系统节点。

例如,执行nvm install 10.14, nvm将在当前shell会话中使用该版本,但它并不总是像你所期望的那样将其设置为未来会话的默认版本。在新的shell会话中获得的节点版本由nvm alias default决定。令人困惑的是,nvm install只会设置默认别名,如果它还没有设置。要得到预期的行为,请这样做:

nvm alias default ''; nvm install 10.14

这将确保下载该版本,并将其用于当前会话,并将其设置为未来会话的默认版本。

安装最新的稳定版本:

nvm install stable

设置default为稳定版本(而不是指定版本):

nvm alias default stable

列出已安装版本:

nvm list

从v6.2.0开始,它看起来像这样:

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)