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

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

安装最新的稳定版本:

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)

节点本身的别名,以避免在以后更新节点版本时同时更新默认别名。

nvm alias default node

在我这端,我必须更改别名STABLE和DEFAULT

nvm alias stable {node_version}

nvm alias default {node_version}