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

你知道我哪里做错了吗?


当前回答

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

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" --no-use  # 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

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

$ nvm alias default {NODE_VERSION}

当我们使用上面的命令时,只更新节点版本,但NPM仍然使用旧版本。

这里是更新节点和npm的另一个解决方案,在我的情况下,我想使用节点8.9.4,我已经使用了下面的命令。

$ nvm use default 8.9.4

该命令返回输出。

现在使用节点v8.9.4 (npm v5.6.0)

我在这里找到了一条新路。使用交互式管理你的Node.js有助于。

1.-通过自制软件安装

2.-因为我使用的是zsh终端,在~/。ZSHRC添加这些行,如果你使用bash,你需要把这些行放在~/.bash_profile中

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

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