zshrc“命令未找到:npm”

13

所以我正在学习node.js。我一直在按照这篇教程进行安装并尝试使用一些东西。

无论如何,npm的行为非常奇怪。它会工作一段时间(例如,我更改了它的查看器配置设置),但突然间“消失”,以至于下次我输入时...

npm ...(anything)
在命令行中,我的shell告诉我找不到npm命令。以前,使用nvm卸载然后重新安装npm是有效的,但我不想每十分钟这样做,而且对我来说很奇怪,它突然就停止工作了。
我认为最后一次,它在我编辑并重新加载~/.zshrc文件后停止工作 - 只是添加npm和node tab-completion插件。
有什么想法吗?我将发布一些基本命令的结果,但我真的不擅长sysadmin方面的东西,也不知道在这里应该寻找什么。
nvm -ls
   v0.8.22
current:    v0.10.2
default -> 0.8 (-> v0.8.22)

哪个节点

/usr/bin/node

哪个是npm

npm not found

在我的根目录中,有直接包含 nvm(这是重复的吗?)和 npm 目录。

如果我进入 /usr/bin,node 是一个文件,不是一个目录。还有一个文件叫做 npm,但没有 nvm 文件。

正如以上所有内容所显示的那样,我真的不知道发生了什么。我已经搜索过了,但似乎没有人遇到这个问题。有什么想法或者如何找出原因吗?

编辑 注意到我的默认 node 不是最新的版本,我进行了所有这些操作。抛开为什么我的 shell 自动切换到 bin 目录(以及为什么那似乎是一个 GitHub 存储库 - 不知道我的电脑怎么回事),这提供了任何线索吗?

  node  nvm alias default v0.10.2
default -> v0.10.2
  node  nvm ls
   v0.8.22
current:    v0.10.2
default -> v0.10.2
  node  npm
zsh: command not found: npm
  node  nvm install npm
######################################################################## 100.0%
Checksums do not match.
Binary download failed, trying source.
Additional options while compiling: 
nvm: install N/A failed!
  bin git:(master) nvm uninstall npm
N/A version is not installed yet... installing
######################################################################## 100.0%
Checksums do not match.
Binary download failed, trying source.
Additional options while compiling: 
nvm: install N/A failed!
  bin git:(master) cd ~/rails/node

编辑2 - 我确保将节点路径添加到了我的zshrc文件中:

#other stuff...
export PATH=(...):/usr/bin/node

但是当我尝试运行时

source ~./zshrc

我收到了这个投诉:

.zshrc:11: command not found: npm

指向以下行的位置(已添加行号):

10 . ~/nvm/nvm.sh
11 . <(npm completion)

这是我从上面的教程中学到的,并且在npm还能正常工作的时候,查找如何实现选项卡自动补全。

回应Jens:

这段代码出现在我的~/nvm/nvm.sh文件中,靠近开头部分:

# Auto detect the NVM_DIR
if [ ! -d "$NVM_DIR" ]; then
    export NVM_DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0}) && pwd)
fi

# Make zsh glob matching behave same as bash
# This fixes the "zsh: no matches found" errors
if [ ! -z "$(which unsetopt 2>/dev/null)" ]; then
    unsetopt nomatch 2>/dev/null
fi

我尝试并且认为已经成功地将npm目录的chmod设置为读写可执行。


2
你的 PATH 是否指向 node 安装的位置? - alex
@alex -- 我试过了,但我不确定那在哪里。我将/npm添加到路径中,因为根目录中有npm文件夹。而且node.js也正常工作,所以我认为已经正确地添加到路径中了。我该如何找出要添加到路径中的目录?Jessemon -- 你是怎么解决这个问题的? - Sasha
是的,现在它确实可以了。但是现在我添加了这个之后,尝试加载zshrc文件时会抱怨“ .zshrc:11: command not found: npm”,指向我一段时间前添加nvm路径的那行代码(“. ~/nvm/nvm.sh”)。 - Sasha
那么请务必使用/full/path/to/npm completion - Jens
我按照 @Jens 的建议使用了完整路径。我认为我一开始也使用了 sudo,这可能导致了问题。 - Jess
10个回答

8

1) 打开您的zsh配置文件

nano ~/.zshrc

2) 添加路径

export PATH="$PATH:/usr/local/share/npm/bin"

3) 按下CTRL + X并Y来保存文件

4) 执行文件的内容

source ~/.zshrc

这个简单的过程对我有效:-)

7
老实说,我不确定这个方法是否能够解决你所遇到的问题,但我之前也遇到了和你描述的基本一模一样的问题——npm在工作一段时间后突然完全失效了。我尝试了很多人在这里建议的相同方法,但都没有成功。
最终让我解决问题的方法,听起来非常简单/愚蠢,就是:
source ~/.bash_profile

我希望我能有更好的解释为什么那是“法宝”,但至少它起作用了!

干杯!


6
我遇到了Node和npm都无法正常工作的问题。我花了大约6个小时在线搜索解决办法,但没有运气。npm网站提到:

现在npm已经随着Node一起安装。

我打算重新安装Node.js,希望它可以解决这些问题,它确实做到了:)
安装完全成功后,Node安装程序显示以下最终消息:

Node被安装在

/usr/local/bin/node

npm被安装在

/usr/local/bin/npm

确保/usr/local/bin在您的$PATH中

那就是我注意到我的$PATH和安装目录是错误的地方。安装后,我能够运行node和npm。
希望有所帮助...

2

我在我的 Mac 上遇到了相同的问题,我采取了以下步骤:

  1. 卸载现有的 node
  2. 前往 node 网页并下载该软件包,然后安装它
  3. 转到 ~/.zshrc,路径通常为 /usr/local/bin
  4. 享受使用 npm

2

1
我使用了以下命令,它在Ubuntu中起作用。
export NVM_DIR=~/.nvm
 [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

这是与此其他答案相同的解决方案。 - Eric Aya
请在您的回答中提供更多细节。目前的写法让人难以理解您的解决方案。 - Community

1

我遇到了同样的问题(我也是一个从零开始学习的学生),我正在使用Ubuntu 21.04,在重新安装VSC和更新OhMyZSH后,Node仍然存在,因为当我执行node -v时,我能够看到当前版本,但是使用npm -v时会出现以下错误: zsh:未找到命令:npm

我查看了之前的答案,并尝试将“命令”复制粘贴到终端中: 〜sudo nano〜/ .zshrc ,但没有任何作用,直到我开始检查“主页”文件夹中的隐藏文件,我注意到NODE正在以LTS版本“收费”,但NPM是最新版本,所以我只需更改路径到最新版本文件夹,现在它又可以正常使用了。对于我来说,最终结果如下: export PATH="$PATH:/home/myLaptopName/.nvm/versions/node/v17.0.1/bin" 因此,我的建议是先检查是否已经安装了Node:node -v以获取版本信息,还可以使用whereis node查找目录路径,然后开始进行一些目录考古工作,直到找到npm文件。


1
对于我和其他在这里遇到问题的谷歌用户来说,问题在于在Ubuntu上调用sudo时使用了secure_path,其中不包括NPM。
您可以禁用secure_Path,但这绝对不是推荐的做法。因此,当通过NVM安装时,我只需将节点bin附加到secure path中即可。
  • $: sudo su

  • $: visudo

然后将/home/YourUsername/.nvm/versions/node/v8.5.0/bin:添加到secure_path变量中。
更多信息:sudo changes PATH - why?

1
curl -L https://npmjs.org/install.sh | sh

我在新安装的Mac OS上尝试了它,它可以工作!

这对我有用,我的问题是符号链接...谢谢! - Anthony Piñero

0

尝试通过Nodesource重新安装node和npm。请按照以下步骤操作:

  1. 以具有sudo权限的用户身份运行以下curl命令,启用NodeSource存储库:

    curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

该命令将向您的系统添加NodeSource签名密钥,创建apt源存储库文件,安装所有必要的软件包并刷新apt缓存。

如果您需要安装另一个版本,例如14.x,请将setup_12.x更改为setup_14.x

  1. 启用NodeSource存储库后,通过键入以下内容安装Node.js和npm:

    sudo apt install nodejs

nodejs软件包包含node和npm二进制文件。

通过打印它们的版本来验证已成功安装Node.js和npm:

node --version and npm --version

参考: https://linuxize.com/post/how-to-install-node-js-on-ubuntu-18.04/


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