如何使用nvm更改Node.js版本

235

我正在使用Yeoman创建项目。当我尝试使用Gulp.js时,运行命令gulp serve出现错误提示我需要旧版本的Node.js(8.9.4),但我已经安装了最新版本(10.14.1)。

因此,我安装了nvm来更改Node.js版本。我必须将其设置到路径C:\中,然后成功运行了nvm install 8.9.4。但是,当我尝试使用它nvm use 8.9.4时,仍然使用的是最新版本:

Enter image description here

如果我尝试使用8.10.0,然后运行node -v,它会告诉我访问被拒绝,并且任何Node.js命令都一样。


尝试在管理员命令提示符中运行 - Deepak Kumar
请查看 *为什么在提问时不上传代码/错误的图片?(例如,"图片应该只用于说明无法以其他方式清晰表达的问题,例如提供用户界面的截图。"*),并采取正确的做法(它也涵盖了命令行和程序输出)。 - Peter Mortensen
5个回答

300

nvm install 8.10.0 用于在本地安装特定版本的Node。

要使用它:

nvm use 8.10.0

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

您始终可以设置默认的Node.js版本:

nvm alias default 8.10.0

1
我尝试使用8.10.0版本,但是当我运行node -v时,它告诉我访问被拒绝,任何node命令都是如此。 - Bilal Dekar
1
以管理员身份运行cmd - Derviş Kayımbaşıoğlu
在cmd.exe中执行where node,进入该文件夹并尝试以提升的权限执行。我相信这要么是权限问题,要么是您可能有另一个node安装,nvm无法更改。 - Derviş Kayımbaşıoğlu
4
需要管理员权限才能使其“固定”吗?因为它在没有 root 权限的情况下运行得很好,但下次打开 shell 时它会恢复到旧版本。 - Michael
@Michael tail -n2 ~/.bashrc nvm use v14.18.2 你可以将上述命令添加到你的 .bashrc 文件中,每次登录时它都会在本地设置。 - V H

168
  1. 安装

    nvm install 8.10.0
    
  2. 每个终端仅使用一次

  3. nvm use 8.10.0
    
  4. 设置为所有终端的默认值

  5. nvm alias default 8.10.0
    
  6. 为您的IDE设置Node.js版本

在此输入图像描述

  1. 欲了解更多信息,请参阅nvm文档

55

切换到特定的Node.js版本

nvm use 8.10.0

切换到最新的Node.js版本

nvm use node

切换到最新的LTS版本

nvm use --lts

您可以通过运行以下命令来检查已安装的版本:

nvm ls

绿色条目在左侧有一个箭头,表示正在使用的当前版本。

按项目指定Node.js版本

版本管理器(例如RBEnv)使您可以按项目指定Ruby版本(通过将该版本写入当前目录中的.ruby-version文件)。这在某种程度上也适用于nvm。如果您在项目中创建一个.nvmrc文件并指定版本号,则可以cd进入项目目录并键入nvm use。nvm将读取.nvmrc文件的内容,并使用您指定的任何Node.js版本。

如果您希望自动发生此操作,则可以在项目主页上找到几个片段,可添加到.bashrc.zshrc文件中以实现此目的。

以下是Z shell(可执行的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会自动更改Node.js版本。


我在构建服务器上安装了多个版本,不同的应用程序需要不同的版本,所以使用 nvm use x.xx 就可以完成工作。 - Shan

8

请确保以系统管理员身份运行您的终端

然后运行以下命令

nvm use <version>

在我的例子中,我运行了 nvm use 16.14.0 命令。你需要先安装想要使用的版本。
没有权限时,我遇到了这个错误:

输出

exit status 5: Access is denied.

0

你需要编辑你的.bashrc文件。

在该文件中添加以下内容。将版本更改为您喜欢的版本。此示例使用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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接