NVM管理的全局安装npm包返回“command not found”错误

10

我已经安装了nvm来管理我的node版本。如果我全局安装一个包,npm install -g fkill,然后运行fkill,我会收到错误信息zsh:command not found: fkill

以下是一些用于调试的命令:

$ npm root -g
/home/jchi/.nvm/versions/node/v10.15.3/lib/node_modules

查看我的 PATH 环境变量...

$ echo $PATH
/home/jchi/.pyenv/shims:/home/jchi/.pyenv/bin:/home/jchi/.nix-profile/bin:/home/jchi/.autojump/bin:/home/jchi/.nvm/versions/node/v10.15.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

我在我的PATH中没有看到npm root -g的输出。

我认为这是nvm的责任,它应该将其添加到我的路径中,以便可以运行全局安装的软件包。因此,我查看了我在.zshrc中启动nvm的内容。

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
  105 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

欢迎提出建议

3个回答

6

查看您的PATH,您的PATH下确实有nvm bin文件夹。

/home/jchi/.nvm/versions/node/v10.15.3/bin

建议检查~/.npmrc中是否设置了prefix相关的设置。

如果您设置了任何prefix设置,请将其删除。

然后再次尝试运行npm install -g fkill


2
你好,我有完全相同的情况,而且.npmrc中也没有前缀。有什么建议吗? - Adnan
嘿,你能多描述一下你的情况吗? - Wesgur
1
嗨,我的npmrc配置文件中有这个确切的前缀条目,你的解决方案非常有效。全局的npm包也安装在正确的nvm节点版本下,谢谢你。 - darul75

0

解决这个问题的一种方法是将您的NVM节点二进制文件添加到路径中。

  1. 您正在使用哪个节点版本?node --version
  2. 将以下行添加到您的.bashrc文件中(用步骤1中获取的版本替换VERSION)
export PATH="$HOME/.nvm/versions/node/VERSION/bin:$PATH"

例子:

export PATH="$HOME/.nvm/versions/node/v16.1.0/bin:$PATH"
  1. 当您刷新终端(. ~/.bashrc 或重新打开终端)时,全局 Node 命令现在应该可以使用了。

不幸的是,似乎每个您使用的 Node 版本都需要执行此操作。


0
在我的情况下,我全局安装了一个包(我们称之为cat-hat)在Node 14上使用NVM(通过检查.nvm/versions/node/v14.17.6/lib/node_modules/cat-hat进行验证),但是当我尝试在命令行中运行它时,出现了zsh: command not found
在我的情况下,问题是cat-hat只能在13以下的节点版本上正常运行。这可以在package.json engines.node字段中进行验证。
我通过切换到节点12,并再次为v12安装cat-hat来解决这个问题,然后它按预期工作。

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