当在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似乎总是加载node的第一个安装版本(除非你通过nvm使用临时更改它)。

我发现改变默认值的唯一方法是:

Clear nvm cache:清除nvm缓存 将默认设置为所需的版本:nvm alias默认12(或任何版本) 切换到需要的版本:nvm use 12 卸载所有其他版本: NVM ls(列出安装) NVM uninstall x(为每个非默认安装运行) 重新安装其他版本:nvm install x

您可以使用这个脚本来自动化这个过程(只需将第一个变量更改为所需的版本)-它将自动重新安装之前的所有版本。

DEFAULT_NVM_VERSION=16
nvm cache clear
nvm install $DEFAULT_NVM_VERSION
nvm alias default $DEFAULT_NVM_VERSION
NVERS=$(nvm ls --no-alias | grep -v -- "->" | grep -o "v[0-9.]*")
while read ver; do nvm uninstall $ver; done <<< $NVERS
while read ver; do nvm install $ver; done <<< $NVERS
nvm use $DEFAULT_NVM_VERSION

或者作为一行语句:

DEFAULT_NVM_VERSION=16 && nvm cache clear && nvm install $DEFAULT_NVM_VERSION && nvm alias default $DEFAULT_NVM_VERSION && NVERS=$(nvm ls --no-alias | grep -v -- "->" | grep -o "v[0-9.]*") && while read ver; do nvm uninstall $ver; done <<< $NVERS && while read ver; do nvm install $ver; done <<< $NVERS && nvm use $DEFAULT_NVM_VERSION

新终端现在应该尊重默认版本。

其他回答

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

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

试试nvm alias default。例如:

$ NVM别名默认为0.12.7

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

出于某种原因,在我的.bashrc文件中,我发现了这个:

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

还不得不去掉——禁止使用的标志,我不记得一开始就把它挂在那里了…… 只是另一件需要检查的事情。

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

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

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

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

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

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