如何使用 nvm 更改节点版本

How to change node version with nvm

我正在使用 yeoman 创建一个项目,当我尝试使用 gulp 我 运行 cmd : gulp serve 一个错误告诉我我需要一个旧版本节点(8.9.4),知道我已经安装了最新版本(10.14.1)。

所以我安装了 nvm 来更改节点版本,我必须将它设置到路径 C:\,然后我 运行 成功:nvm install 8.9.4 并且当我尝试使用它时: nvm use 8.9.4,始终使用最新版本

如果我尝试使用 8.10.0,那么 运行 node -v 它告诉我访问被拒绝,与任何节点命令相同

你需要使用

nvm use 8.10.0

请注意,您需要以管理员身份运行执行此命令

1) 安装 (可能需要 root 权限)

nvm install 8.10.0

2) 每个终端使用一次 (可能需要 root 权限)

nvm use 8.10.0

3) 设置为所有终端的默认值 (可能需要 root 权限)

nvm alias default 8.10.0

4) 附加信息

  • 查看nvm documentation了解更多信息

  • 您可能还需要为您的 IDE 指定节点版本:

切换到特定的 Node.js 版本

nvm use 8.10.0  

切换到最新的Node.js版本:

nvm use node  

切换到最新的 LTS 版本:

nvm use --lts  

您可以通过运行查看您安装了哪些版本:

nvm ls  

左边带箭头的绿色条目是当前使用的版本

在每个项目的基础上指定节点版本

rbenv 等版本管理器允许您在每个项目的基础上指定 Ruby 版本(通过将该版本写入 .ruby-version 当前目录中的文件)。这在 nvm 中是可能的,因为如果您在项目中创建一个 .nvmrc 文件并指定版本号,您可以 cd 进入项目目录并键入 nvm use。然后 nvm 将读取 .nvmrc 文件的内容并使用您指定的任何版本的 Node。

如果自动发生这种情况对您来说很重要,那么项目主页上有几个片段供您添加到您的 .bashrc .zshrc 个文件来实现这一点。

这是 ZSH 片段。将其放在 nvm 配置下方:

    autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

if [ "$nvmrc_node_version" = "N/A" ]; then
  nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
  nvm use
fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc  

当您切换到包含 .nvmrc 文件的目录时,您的 shell 将自动更改节点版本。

确保您运行您的终端是管理员

nvm use <version> // this should work fine

没有权限,我收到了这个错误

nvm 使用 16.14.0 退出状态 5:访问被拒绝。

您需要编辑 .bachrc 文件。

将以下内容添加到该文件。将版本更改为您的首选版本。此示例使用 v16.13.1。 您可能已经在该文件中有类似的内容,这会导致更改回您以前的版本。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
export PATH="/home/zentech/.local/bin:/home/zentech/.nvm/versions/node/v14.18.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"