系统中有一个通过 nvm
安装的 nodejs
。命令不能运行 npm
。
控制台是 Oh my zsh
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
额外信息:
为了更快的 shell 初始化,我使用 lazynvm
,它只在需要时加载 Node。
lazynvm() {
unset -f nvm node npm
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
}
nvm() {
lazynvm
nvm $@
}
node() {
lazynvm
node $@
}
npm() {
lazynvm
npm $@
}
参考资料: 懒加载nvm以加快shell启动速度
[ -s "$NVM_DIR/nvm.sh" ]
的人 => -s FILE - 如果FILE存在且大小不为零,则为真
- Kellen Stuart从Bash切换到Oh-My-Zsh
如果你已经安装了nvm
并且要从bash
切换到oh-my-zsh
,你可以简单地打开.zshrc
文件,并添加内置于oh-my-zsh
中的nvm
插件:
.zshrc
: nano ~/.zshrc
plugins=(git)
的位置,并在括号中添加nvm
,以使其显示为plugins=(git nvm)
(用空格分隔插件)control
+ O
(在macOS上),然后按enter
保存,然后按control
+ X
退出nvm ls
以确认它是否有效。请注意,您必须打开一个新的窗口/标签才能使shell使用新更新的.zshrc
配置文件(或输入source ~/.zshrc
等)。来源:https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/nvm
nvm ls
命令无法工作,这是怎么回事? - undefinedwget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
echo 'export NVM_DIR=~/.nvm' >> ~/.zshrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> ~/.zshrc
source ~/.zshrc
nvm -v
使用 Homebrew 安装 nvm
brew install nvm
编辑您的系统配置
vim ~/.zshrc # or vim ~/.bashrc
export NVM_DIR=~/.nvm
保存文件:按下 esc 键,然后输入 :wq
重新加载配置:source $(brew --prefix nvm)/nvm.sh
查看 nvm 版本
$ nvm --version
# 0.36.0
享受它。
我发现oh-my-zsh自带一个nvm插件(不同于lukechilds的插件)。经过简短检查,我认为在加载时它会添加必要的修改到.zshrc
,因此只需将nvm
添加到.zshrc
中的插件列表中应该也能工作(对我来说确实起作用了)。
通过谷歌搜索,我没有找到更多有关这个默认nvm插件的详细信息,所以我不知道这是否是“必须”解决方案。
nvm
添加为插件在我的Mac上无法工作(尽管操作系统不应该是一个因素)。我仍然收到zsh:command not found:nvm
。我会尝试手动添加。 - Mike S.~/.zshrc
文件。nano or vi ~/.zshrc
# NVM
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
source ~/.zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
然后在您的终端上运行此代码:
source ~/.zshrc
# Add every binary that requires nvm, npm or node to run to an array of node globals
NODE_GLOBALS=(`find ~/.nvm/versions/node -maxdepth 3 -type l -wholename '*/bin/*' | xargs -n1 basename | sort | uniq`)
NODE_GLOBALS+=("node")
NODE_GLOBALS+=("nvm")
# Lazy-loading nvm + npm on node globals call
load_nvm () {
export NVM_DIR=~/.nvm
[ -s "$(brew --prefix nvm)/nvm.sh" ] && . "$(brew --prefix nvm)/nvm.sh"
}
# Making node global trigger the lazy loading
for cmd in "${NODE_GLOBALS[@]}"; do
eval "${cmd}(){ unset -f ${NODE_GLOBALS}; load_nvm; ${cmd} \$@ }"
done
zsh-nvm
插件以便在 oh-my-zsh 中管理 Node.js 版本。 - Yossarian42