ChatGPT解决这个技术问题 Extra ChatGPT

sudo:npm:找不到命令

我正在尝试升级到最新版本的节点。我正在按照 http://davidwalsh.name/upgrade-nodejs 的说明进行操作

但是当我这样做时:

sudo npm install -g n

我得到错误:

sudo: npm: command not found

npm 无需 sudo 即可工作。当我做:

whereis node

我懂了:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

跑步:

which npm

显示:

/usr/local/node/bin/npm

我在 https://stackoverflow.com/a/5062718/1246159 尝试了解决方案

但我仍然遇到同样的错误。我还查看了 /etc/sudoers 文件,相关行是:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

这对我来说看起来不错。我怎样才能让 NPM 与 sudo 命令一起工作?

这行得通吗? sudo /usr/bin/npm install -g n
您可以尝试重新安装节点吗?听起来你删除了 npm。
您可能已将 /usr/local/node/bin 添加到 $PATH,但 npm 应该安装在 /usr/local/bin 中。第一个目录不在 secure_path 中,这解释了为什么 sudo 找不到它。
在 Ubuntu 上使用 nvm - 带有@robertklep 评论,我尝试了 sudo /home/${user}/.nvm/version/node/${version}/bin/npm install 并且它有效。
它通过从以下软件包重新安装解决了我的问题。 nodejs.org/en/download

f
fedorqui

我必须做

sudo apt-get install npm

这对我有用。


很难理解你想表达什么。
这个已经过期了。对我有用的是我在这里找到的这些命令:github.com/nodesource/distributions#debinstall # Using Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # 使用 Debian,作为 root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
@tinysunlight我不确定什么不清楚。操作员说缺少 npm 命令。此命令安装 npm 命令。
这不是问题的正确答案,因为从操作中可以明显看出 npm 已安装但在通过 sudo 调用时无法访问。使用此解决方案,您可以重新安装已经存在的 npm。这是在对抗症状,而不是寻找原因。我知道这可能会纠正某些人的坏事,但这样站着会产生误导。
当我在 Ubuntu 18.10 上使用 NVM 安装节点时,sudo 无法将 npm 识别为命令。 sudo apt-get install npm 为我工作。
H
Harikrishnan

npm 文件应该在 /usr/local/bin/npm 中。如果它不存在,请使用其 website 上的包再次安装 node.js。这在我的情况下有效。


谢谢。如果将node安装在其他没有安装os的数据盘,找不到这个路径。
对于带有 homebrew 的 mac os.. 两个步骤是 (1) 哪个节点 (2) 哪个 npm 应该都在 /usr/local/bin 中(homebrew 安装/符号链接节点+npm)...解决.. 尝试 (1) brew doctor (2) brew reinstall node 如果它仍然存在问题.. 检查您的路径(echo $PATH)。您必须有多个指向各种节点安装的 bin 位置..如果是这种情况...清理(如使其更整洁)您的 ~/.bashrc / ~/.bash_profile,因此 /usr/local/bin 就在那里在没有另一个指向随机节点安装的情况下加载。
这是部分解决方案。手动安装节点时会出现此问题。您必须将每个已安装的二进制文件软链接到 /usr/bin 或 /usr/local/bin。在 root 的 bashrc 中设置路径将不起作用,因为在 sudo 期间不会读取它,因此这似乎是唯一的方法,除非您安装包。
正如@shrimpwagon 所说,手册说明的底部告诉您链接“sudo ln -s /usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin/node /usr/bin/node sudo ln -s / usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin/npm /usr/bin/npm sudo ln -s /usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin/npx / usr/bin/npx"
为什么我应该使用他们的网站?
H
Hima

对于 MAC 用户,以下步骤对我有用。

如果您收到 Brew 错误,这是您需要首先在终端中键入的命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

brew uninstall node 对我不起作用,但我继续使用 brew install nodebrew postinstall 并解决了问题。谢谢
brew postinstall 究竟做了什么?
在 Homebrew 版本 2.2.14 brew postinstall 是多余的
就我而言,brew install node 无法覆盖旧版本的符号链接。我必须运行 brew link --overwrite node 来解决问题。
M
Matteo Baldi

我有同样的问题;以下是修复它的命令:

sudo ln -s /usr/local/bin/node /usr/bin/node

sudo ln -s /usr/local/lib/node /usr/lib/node

sudo ln -s /usr/local/bin/npm /usr/bin/npm

sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf


在 CentOS 7 上为我工作
为我工作 Ubuntu 16.04.1 LTS。我使用 NVM,所以第一个路径是 NVM 安装节点和 npm 的位置(路径包括版本 %HOME%/.nvm/versions/node/v7.4.0/bin/npm)。不幸的是,由于路径中的版本将如何变化,我每次使用 NVM 更新时都必须参考这个答案
这也为我解决了!最初发布在 Stack Overflow:On EC2: sudo node command not found, but node without sudo is ok
@kas sudo ln -s $(whereis node) /usr/bin/node 等等。在您的 bash 个人资料中。
在 AWS ec2 实例中为我工作。
J
Jacksonkr

** 编辑 **

警告! - 做一个chmod 777是一个相当激进的解决方案。首先尝试这些,一次一个,当一个工作时停止:

$ sudo chmod -R 777 /usr/local/lib/node_modules/npm

$ sudo chmod -R 777 /usr/local/lib/node_modules

$ sudo chmod g+w /usr/local/lib

$ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node 是我会遇到问题的唯一安装部分

Permission denied - /usr/local/lib/node_modules/npm/.github

所以我

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

和中提琴,npm 现在已链接

$ npm -v
3.10.10

额外的

如果您在 lib 上使用 -R 777,我的建议是将嵌套文件和目录设置为默认设置:

$ find /usr/local/lib -type f -print -exec chmod 644 {} \;

$ find /usr/local/lib -type d -print -exec chmod 755 {} \;

$ chmod /usr/local/lib 755


@Jacksonkr .....你刚刚推荐 chmoding 777 整个 local/lib 文件夹吗?
这个目录应该是什么 chmod
@tim_xyz drwxr-xr-x 是 lib 的默认值。也就是说,在设置文件夹时不要使用递归功能 -R
谢谢! sudo chmod -R 777 /usr/local/lib/node_modules 为我工作
除非您有充分的理由,否则永远不要chmod 777
w
wpp

我必须执行以下操作:

brew update brew uninstall node 访问 https://nodejs.org/en/ 下载文件 安装下载的文件


你是英雄。
P
Prakash Ramasamy

为了使用 sudo 权限全局安装 npm 包,/usr/bin/npm 应该可用。如果 npm 存在于其他目录中,请创建如下软链接:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

它适用于 Fedora 25、node8.0.0 和 npm5.0.0


简单有效,在 linux mint 20 上为我工作。
这应该是最好的答案!谢谢老兄,它对我有用
f
friederbluemle

在 macOS 上,这对我有用:

brew reinstall node

抱歉,刚刚注意到该问题标有 unix,但它可能仍然有帮助,因为它是“找不到 macos npm 命令”的热门 Google 搜索结果
f
frankchen0130

对于 CentOS 用户,这对我有用:

sudo yum install npm

这种方法的问题在于,例如在 Fedora 中,它在 dnf / yum repos 中已经过时了
在 CentOS 7 上,您需要先启用 EPEL repo:yum install epel-release; yum install npm
G
Garreth McDaid

如果您使用 nvm 安装了 node/npm,则必须先运行 nvm 环境配置文件,然后才能使用任一软件包。

这通常在 ~/.nvm/nvm.sh 中找到。

要自动运行它,包括:

source ~/.nvm/nvm.sh

在您的用户的 .bash_profile 文件中

如果您想对该用户使用 sudo,请确保包含 -i 参数以使 sudo 设置用户环境。例如

sudo -iu jenkins npm install grunt-cli

B
Bhargav Rao

对于安装节点后的 debian 输入

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh

在 Ubuntu 20.4 上也解决了
d
dipenparmar12

您可以为我制作符号链接及其作品。

查找当前 npm 的路径

哪个 npm

通过以下命令建立符号链接

sudo ln -s which/npm /usr/local/bin/npm

验证。

须藤 npm -v


最简单的解决方案,对我来说很完美,只需要对节点做同样的事情
@dipenparmar12 我也试过了,但现在我得到 /usr/bin/env: 'node': Not a directory
B
Brian Sanchez

只需重新安装。

在 RHEL、CentOS 和 Fedora 上

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

然后

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

简单!.. node 和 npm 现在都像魅力一样工作!


m
mipasov

如果您已下载节点包并在 /opt 之类的地方解压缩,您可以简单地在 /usr/local/bin 内创建符号链接。

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

e
eustatos

为我工作Resolving EACCES permissions errors when installing packages globally

为了最大限度地减少权限错误的可能性,您可以将 npm 配置为使用不同的目录。在此示例中,您将在主目录中创建和使用隐藏目录。

备份您的计算机。在命令行的主目录中,为全局安装创建一个目录:

 mkdir ~/.npm-global

配置 npm 以使用新的目录路径:

 npm config set prefix '~/.npm-global'

在您首选的文本编辑器中,打开或创建一个 ~/.profile 文件并添加以下行:

 export PATH=~/.npm-global/bin:$PATH

在命令行上,更新您的系统变量:

 source ~/.profile

要测试您的新配置,请在不使用 sudo 的情况下全局安装包:

 npm install -g jshint

D
Daltron

因此,对于那些使用:

NVM 和自制软件

确保设置节点版本。对我来说,我的节点版本不再设置。所以,我检查了我使用的版本

nvm ls

这列出了 v16.13.1,所以我将它设置为使用它

nvm use 16

一旦我的节点版本被设置,npm 命令再次工作


S
Saurabh Shetty

我有同样的问题,原因是安装节点时没有安装 npm 包管理器。这是由于以下错误造成的: 在安装过程中有一个步骤叫做“自定义设置”,这里您可以选择以下选项之一: 1)Node.js 运行时(默认选择此项)。 2) npm 包管理器 3) 在线文档快捷方式。 4)添加到路径。如果您按原样继续,则不会安装 npm 包管理器,因此您将收到错误消息。

解决方案:当你得到这些选项时,选择 npm 包管理器。这对我有用。


m
mauricio777

使用 visudo 将 npm 二进制路径附加到 sudo 路径并编辑“secure_path”

现在“sudo npm”工作


И
Игорь Демянюк

我解决了这个问题

apt-get install npm2deb

这是什么答案? npm2deb 是第 3 方
它并不完全“受信任”,因为在第 3 方中比直接从源代码中的 npm 更有可能受到损害。我对 npm2deb 一无所知,但想想如果你想在你的公司使用它,他们可能会严格审核它
S
Striped

我在 Homestead 也遇到了同样的问题,并尝试了很多方法。我试过了

sudo apt-get install nodejs

我收到以下错误:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

最后我尝试了

sudo apt-get dist-upgrade

它工作得很好。

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0

x
xargr

我的解决方案是:

sudo -E env "PATH=$PATH" n stable

对我来说很好。

在这里找到它:https://stackoverflow.com/a/29400598/861615

发生这种情况是因为您更改了默认全局包目录


A
AEM

而不是再次安装节点,这似乎是公认的解决方案,问题是没有对 nodejs 文件夹/usr/local 的权限。
输入以下命令 sudo chmod -R 777 /usr/local/nodejs/


A
ASHISH R

完全删除节点:

  brew uninstall --force node

再次安装:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

L
Lionel T

如果对使用 rh-* 包的任何人有用,这对我有用:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

M
MOHAMMAD WASEEM

由于我使用 node.js 上可用的 .tar 文件安装了 node.js,因此我必须将节点目录的位置放在:

~/.bashrc

通过使用以下命令从普通用户更改为 root 用户:

须藤 -i

https://i.stack.imgur.com/xvgie.png

然后使用 .bashrc 引用

~/.bashrc

在那之后

npm: command not found

走了


M
Manas

对我来说,上面提到的任何使用 Homebrew 的方法都不适用于 macOS。因此,我使用 Homebrew 卸载了节点,并从 https://nodejs.org/en/download/ 下载了节点包并安装了它。它就像一个魅力。


M
Mithun Adhikari

就我而言,由于某种原因,在安装了一些 python 模块后,我突然开始收到消息说 node 未安装或未被识别为命令。检查后,我的路径已在 .bashrc 中注册。所以,我找到了那个文件,一切又开始工作了。

source .bashrc


S
Sohaib El Mediouni

如果您使用的是 linux,请删除 /usr/lib 中存在的 node_modules 文件夹

sudo rm -rf node-modules

然后使用 curl 重新安装节点:

sudo apt-get update
sudo apt install curl build-essential
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs

如果您提供解释为什么这是首选解决方案并解释它是如何工作的,它会更有帮助。我们想要教育,而不仅仅是提供代码。
S
Shalabyer

我的解决方法是以 root 身份登录,现在我不必再次使用 sudo

su root

Y
YathuGulan Uthayan

安装 node.js 并简单地运行

npm install -g bower 

从你的项目目录