Nodejs源码编译安装0.10.28后,命令行运行sudo npm提示找不到命令
Nodejs源码编译安装0.10.28后,命令行运行sudo npm提示找不到命令
问题描述:无法使用sudo npm命令,node 命令可以使用如:node app.js sudo npm 报错: 找不到命令 npm install -g express-generator报错: npm ERR! Error: EACCES, mkdir ‘/etc/node/lib/node_modules/express-generator’ … npm ERR! Please try running this command again as root/Administrator.
源码包:http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz 安装目录:/etc/node 操作系统:ubuntu12.04,64位 环境变量:/etc/profile,已加入
export NODE_HOME=/etc/node export PATH=$PATH:$NODE_HOME/bin export NODE_PATH=$NODE_HOME/lib/node_modules
另外 我已经在我帐号下的./bashrc 文件加入: export PATH=/etc/node/lib/node_modules/npm/bin:$PATH
问题描述
你尝试在Ubuntu 12.04上通过源码编译安装Node.js 0.10.28,并且安装完成后发现无法使用sudo npm
命令。具体表现为:
node app.js
可以正常运行。- 使用
sudo npm
时提示找不到命令。 - 使用
npm install -g express-generator
安装全局模块时出现权限错误。
解决方法
1. 检查环境变量
首先确保你的环境变量配置正确。根据你的描述,你在 /etc/profile
和 ~/.bashrc
中添加了以下内容:
# /etc/profile
export NODE_HOME=/etc/node
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
# ~/.bashrc
export PATH=/etc/node/lib/node_modules/npm/bin:$PATH
确保这些环境变量配置无误并且生效。可以通过执行以下命令检查:
echo $PATH
你应该能看到 /etc/node/bin
路径。
2. 重新加载环境变量
如果环境变量没有生效,你需要重新加载配置文件:
source /etc/profile
source ~/.bashrc
3. 使用正确的权限安装全局模块
当你使用 sudo
运行命令时,环境变量不会被继承。因此,你需要使用正确的权限来安装全局模块。你可以通过以下方式解决:
- 不使用
sudo
安装全局模块(如果你有权限):
npm install -g express-generator
- 如果你需要使用
sudo
,确保安装路径对所有用户可写:
sudo npm install -g --prefix /usr/local express-generator
或者修改默认的全局安装路径:
mkdir -p /usr/local/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules
npm config set prefix /usr/local
之后再运行:
npm install -g express-generator
总结
确保环境变量配置正确并生效,同时避免在全局安装模块时使用 sudo
,除非你有明确的权限需求。如果必须使用 sudo
,确保安装路径对所有用户可写。这样应该能解决你遇到的问题。
如果是sudo 没有 了npm 了吧…那就会涉及到了一个sudo 环境变量重置的问题…这个问题非常诡异…
无语了,各种重新编译也不行,也试过:sudo chown -R whoami
node_modules/
最终还是,用apt-get install nodejs 安装的 ,问题ok:
1.先更新源
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
2.安装
sudo apt-get install nodejs
参考:https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
这个不是管理node版本的吗?
重新安装node,npm不就出来了么。。。
npm是否正常,如果npm正常,而sudo npm异常,那只能是环境问题
我现在也遇到了同样的问题。。。sudo npm 找不到命令
我这边也是,我的环境是ubuntu14.04,安装node4.2.1,正常使用node和npm都没问题 sudo node 和sudo npm 都找不到命令
对于你的问题,是因为npm
没有正确安装到你的环境路径中。你需要确保npm
被正确地安装并添加到系统路径中。通常情况下,当你从源码编译安装Node.js时,npm
也会被一同安装。
你可以通过以下步骤来解决这个问题:
-
验证
npm
是否已被安装: 首先,检查一下npm
是否已经被正确安装。node -e "console.log(require('npm').version)"
如果
npm
已经被安装,这个命令应该会输出一个版本号。 -
确保路径设置正确: 确认你的
PATH
环境变量是否正确设置了。你可以在~/.bashrc
文件或/etc/profile
文件中检查是否已经加入了以下行:export PATH=/etc/node/bin:$PATH
修改完成后,运行
source ~/.bashrc
或source /etc/profile
使修改生效。 -
重新安装
npm
(如果npm
没有正确安装): 如果上述方法不起作用,你可以尝试手动安装npm
。首先删除现有的npm
安装,然后重新安装:sudo rm -rf /etc/node/lib/node_modules/npm cd /etc/node curl -L https://www.npmjs.com/install.sh | sudo sh
-
权限问题: 错误信息中的
EACCES
表示权限问题。你可以尝试使用sudo
来安装全局包,但更好的做法是避免全局安装包。如果你确实需要全局安装包,确保你的用户具有相应的写权限,或者考虑使用nvm
(Node Version Manager)来管理不同版本的Node.js和npm,这样可以避免权限问题。 -
验证全局安装路径: 你可以查看全局安装包的默认路径:
npm config get prefix
如果输出的路径不是你期望的路径,你可以修改全局安装路径配置:
npm config set prefix /etc/node
这些步骤应该能帮助你解决问题。如果仍然存在问题,请提供更多的错误信息以便进一步诊断。