我正在尝试升级到最新版本的节点。我正在按照 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
/usr/local/node/bin
添加到 $PATH
,但 npm
应该安装在 /usr/local/bin
中。第一个目录不在 secure_path
中,这解释了为什么 sudo
找不到它。
nvm
- 带有@robertklep 评论,我尝试了 sudo /home/${user}/.nvm/version/node/${version}/bin/npm install
并且它有效。
我必须做
sudo apt-get install npm
这对我有用。
npm 文件应该在 /usr/local/bin/npm
中。如果它不存在,请使用其 website 上的包再次安装 node.js。这在我的情况下有效。
对于 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 node
和 brew postinstall
并解决了问题。谢谢
brew postinstall
究竟做了什么?
brew postinstall
是多余的
brew install node
无法覆盖旧版本的符号链接。我必须运行 brew link --overwrite node
来解决问题。
我有同样的问题;以下是修复它的命令:
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
%HOME%/.nvm/versions/node/v7.4.0/bin/npm
)。不幸的是,由于路径中的版本将如何变化,我每次使用 NVM 更新时都必须参考这个答案
sudo ln -s $(whereis node) /usr/bin/node
等等。在您的 bash 个人资料中。
** 编辑 **
警告! - 做一个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
chmod
?
drwxr-xr-x
是 lib 的默认值。也就是说,在设置文件夹时不要使用递归功能 -R
。
chmod 777
。
我必须执行以下操作:
brew update brew uninstall node 访问 https://nodejs.org/en/ 下载文件 安装下载的文件
为了使用 sudo 权限全局安装 npm 包,/usr/bin/npm
应该可用。如果 npm
存在于其他目录中,请创建如下软链接:
sudo ln -s /usr/local/bin/npm /usr/bin/npm
它适用于 Fedora 25、node8.0.0 和 npm5.0.0
在 macOS 上,这对我有用:
brew reinstall node
unix
,但它可能仍然有帮助,因为它是“找不到 macos npm 命令”的热门 Google 搜索结果
对于 CentOS 用户,这对我有用:
sudo yum install npm
yum install epel-release; yum install npm
如果您使用 nvm 安装了 node/npm,则必须先运行 nvm 环境配置文件,然后才能使用任一软件包。
这通常在 ~/.nvm/nvm.sh 中找到。
要自动运行它,包括:
source ~/.nvm/nvm.sh
在您的用户的 .bash_profile 文件中
如果您想对该用户使用 sudo,请确保包含 -i 参数以使 sudo 设置用户环境。例如
sudo -iu jenkins npm install grunt-cli
对于安装节点后的 debian 输入
curl -k -O -L https://npmjs.org/install.sh
ln -s /usr/bin/nodejs /usr/bin/node
sh install.sh
您可以为我制作符号链接及其作品。
查找当前 npm 的路径
哪个 npm
通过以下命令建立符号链接
sudo ln -s which/npm /usr/local/bin/npm
验证。
须藤 npm -v
只需重新安装。
在 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 现在都像魅力一样工作!
如果您已下载节点包并在 /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
为我工作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
因此,对于那些使用:
NVM 和自制软件
确保设置节点版本。对我来说,我的节点版本不再设置。所以,我检查了我使用的版本
nvm ls
这列出了 v16.13.1,所以我将它设置为使用它
nvm use 16
一旦我的节点版本被设置,npm 命令再次工作
我有同样的问题,原因是安装节点时没有安装 npm 包管理器。这是由于以下错误造成的: 在安装过程中有一个步骤叫做“自定义设置”,这里您可以选择以下选项之一: 1)Node.js 运行时(默认选择此项)。 2) npm 包管理器 3) 在线文档快捷方式。 4)添加到路径。如果您按原样继续,则不会安装 npm 包管理器,因此您将收到错误消息。
解决方案:当你得到这些选项时,选择 npm 包管理器。这对我有用。
使用 visudo 将 npm 二进制路径附加到 sudo 路径并编辑“secure_path”
现在“sudo npm”工作
我解决了这个问题
apt-get install npm2deb
我在 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
我的解决方案是:
sudo -E env "PATH=$PATH" n stable
对我来说很好。
在这里找到它:https://stackoverflow.com/a/29400598/861615
发生这种情况是因为您更改了默认全局包目录
而不是再次安装节点,这似乎是公认的解决方案,问题是没有对 nodejs 文件夹/usr/local 的权限。
输入以下命令 sudo chmod -R 777 /usr/local/nodejs/
完全删除节点:
brew uninstall --force node
再次安装:
brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'
如果对使用 rh-*
包的任何人有用,这对我有用:
sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm
由于我使用 node.js 上可用的 .tar 文件安装了 node.js,因此我必须将节点目录的位置放在:
~/.bashrc
通过使用以下命令从普通用户更改为 root 用户:
须藤 -i
https://i.stack.imgur.com/xvgie.png
然后使用 .bashrc 引用
~/.bashrc
在那之后
npm: command not found
走了
对我来说,上面提到的任何使用 Homebrew 的方法都不适用于 macOS。因此,我使用 Homebrew 卸载了节点,并从 https://nodejs.org/en/download/ 下载了节点包并安装了它。它就像一个魅力。
就我而言,由于某种原因,在安装了一些 python 模块后,我突然开始收到消息说 node
未安装或未被识别为命令。检查后,我的路径已在 .bashrc
中注册。所以,我找到了那个文件,一切又开始工作了。
source .bashrc
如果您使用的是 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
我的解决方法是以 root 身份登录,现在我不必再次使用 sudo
su root
安装 node.js 并简单地运行
npm install -g bower
从你的项目目录
不定期副业成功案例分享
npm
已安装但在通过 sudo 调用时无法访问。使用此解决方案,您可以重新安装已经存在的 npm。这是在对抗症状,而不是寻找原因。我知道这可能会纠正某些人的坏事,但这样站着会产生误导。sudo apt-get install npm
为我工作。