如何使用 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 更改节点版本的主要内容,如果未能解决你的问题,请参考以下文章