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是:

  1. 使用--unsafe-perm标志运行npm install

     [sudo] npm install --unsafe-perm 
  2. unsafe-perm标志添加到你的package.json

     "config": { "unsafe-perm":true } 
  3. 不要使用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理器来安装节点,而是自己编译它,以便它驻留在具有普通权限的本地目录中。

本文提供了一个非常清晰的逐步说明如何做到这一点:

https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04

我通过改变/usr/local~/Users/user-name的所有权来解决这个问题:

sudo chown -R my_name /usr/local

这让我无需做任何事情就可以做任何事情