Npm安装失败,“无法在wd中运行”
我试图让我的节点环境设置在一个新的Ubuntu 12.04实例上,并且已经安装了Node.l0.14,但是当我尝试运行npm install
时遇到了问题。 所以当我尝试npm install
,它说我需要以root或者admin的身份运行它:
Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script' npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/usr/local/lib/node_modules/coffee-script', npm ERR! fstream_type: 'Directory', npm ERR! fstream_path: '/usr/local/lib/node_modules/coffee-script', npm ERR! fstream_class: 'DirWriter', npm ERR! fstream_stack: npm ERR! [ 'DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)', npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53', npm ERR! 'Object.oncomplete (fs.js:297:15)' ] } npm ERR! npm ERR! Please try running this command again as root/Administrator.
但是当试图运行它作为sudo,它说:
npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)
在我的package.json中,它包含以下脚本:
"scripts": { "preinstall": "npm install -g coffee-script node-gyp", "start": "node server.js", "test": "mocha --require should --compilers coffee:coffee-script --colors" },
剩下的devdependencies是有效的,因为我一直在我自己的机器上安装它(Mac)有没有人有一个线索为什么发生这种情况?
文件说(也在这里 ):
如果使用root权限调用npm,则会将uid更改为
user
config所指定的用户帐户或uid,默认为nobody
。 设置unsafe-perm
标志以运行具有root权限的脚本。
您的select是:
-
使用
--unsafe-perm
标志运行npm install
:[sudo] npm install --unsafe-perm
-
将
unsafe-perm
标志添加到你的package.json
:"config": { "unsafe-perm":true }
-
不要使用
preinstall
脚本安装全局模块,单独安装它们,然后运行没有root权限的常规npm install
:sudo npm install -g coffee-script node-gyp npm install
相关 :
- package.json用于全局模块安装
尝试在使用root用户运行CentOs的私有服务器中发布我的nodejs应用程序时遇到同样的问题。 同样的错误是由我的package.json文件中的“postinstall”:“./node_modules/bower/bin/bower install”引起的,所以唯一对我有效的解决scheme是使用这两个选项来避免错误:
1:为bower install命令使用–allow-root选项
"postinstall": "./node_modules/bower/bin/bower --allow-root install"
2:为npm install命令使用–unsafe-perm选项
npm install --unsafe-perm
OP在这里,自从我第一次问这个问题以来,我学到了更多关于节点的知识。 虽然德米特里的答案是非常有帮助的,但最终对我来说,是安装具有正确权限的节点。
我强烈build议不要使用任何软件包pipe理器来安装节点,而是自己编译它,以便它驻留在具有普通权限的本地目录中。
本文提供了一个非常清晰的逐步说明如何做到这一点:
我通过改变/usr/local
和~/Users/user-name
的所有权来解决这个问题:
sudo chown -R my_name /usr/local
这让我无需做任何事情就可以做任何事情