如何使用 nvm 更改节点版本

Posted

技术标签:

【中文标题】如何使用 nvm 更改节点版本【英文标题】:How to change node version with nvm 【发布时间】:2019-05-16 01:24:21 【问题描述】:

我正在使用 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 它告诉我访问被拒绝,与任何节点命令相同

【问题讨论】:

尝试在管理cmd中运行 【参考方案1】:

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 指定节点版本:

【讨论】:

【参考方案2】:

切换到特定的 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 版本。

如果自动发生这对您很重要,项目主页上有几个 sn-ps 供您添加到 .bashrc.zshrc 文件来实现这一点。

这是 ZSH sn-p。将其放在您的 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 版本。

【讨论】:

【参考方案3】:

你需要使用

nvm use 8.10.0

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

【讨论】:

我尝试使用 8.10.0,然后当我运行 node -v 时它告诉我访问被拒绝,与任何节点命令相同 在提升权限的情况下使用它。以管理员身份运行 cmd 在 cmd.exe 中执行 where node 转到文件夹并尝试以提升的权限在那里执行。我认为这要么是权限问题,要么您可能有另一个 nvm 无法更改的节点安装。 是否需要管理员权限才能使其“坚持”?因为它在没有 root 的情况下运行良好,但是下次我打开 shell 时它会恢复到旧版本 @Michael tail -n2 ~/.bashrc nvm use v14.18.2 您可以将上述行添加到您的 .bashrc 中,并且每次登录都会在本地设置

以上是关于如何使用 nvm 更改节点版本的主要内容,如果未能解决你的问题,请参考以下文章

纱线未安装在 nvm 版本节点版本中

NVM 不会在 Mac 上更改 Node 版本

如何在 bash 脚本中调用“nvm use”,并在脚本执行后保留所选节点版本?

自制升级纱线安装节点,而我已经在使用 nvm

如何降级节点版本?

nvm 使用不切换节点版本