当在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

你知道我哪里做错了吗?


当前回答

在VS Code编辑器中使用集成终端时,我也面临着同样的问题。在使用nvm更改节点版本后重新启动VS Code,为我解决了这个问题。

其他回答

在nvm自动加载脚本从github我不得不改变

本地node_version="$(nvm版本)"到本地node_version="$(node -v)"

在我的系统路径中有一个nvm的本地安装,所以nvm版本一直显示system

试试nvm alias default。例如:

$ NVM别名默认为0.12.7

这将设置shell中的默认节点版本。然后通过关闭shell窗口,打开一个新的窗口来验证更改是否持续,然后: 节点——版本

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

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

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

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

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

在我的例子中,另一个程序向.bashrc添加了PATH更改

如果其他程序在nvm初始化后更改了PATH,那么nvm的PATH更改将被忘记,我们将获得PATH上的系统节点(或没有节点)。

解决方案是将nvm设置移到.bashrc的底部

### BAD .bashrc ###

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

解决方案:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

(这是在CentOS的bash 4.2.46。在我看来,这是一个错误,但我可能是错的。