Npm 安装失败,提示 “cannot run in wd”;

我试图让我的节点环境设置在一个新的 Ubuntu 12.04 实例,节点 0.8.14 已经安装,当我试图运行npm install 时遇到了问题。 因此,当我尝试 npm install 时,它说我需要以根用户或管理员身份运行它:

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"
},
其余的 dev 依赖(开发环境依赖)都是有效的,因为我一直在我自己的机器上安装它(Mac) 有人知道为什么会这样吗?< / p >
129778 次浏览

文档表示(也是在这里):

如果npm是以根权限调用的,那么它会将uid更改为用户帐户或由user配置指定的uid,该配置默认为nobody。设置unsafe-perm标志以运行具有根权限的脚本。

你的选择是:

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

    [sudo] npm install --unsafe-perm
    
  2. Add the unsafe-perm flag to your package.json:

    "config": {
    "unsafe-perm":true
    }
    
  3. Don't use the preinstall script to install global modules, install them separately and then run the regular npm install without root privileges:

    sudo npm install -g coffee-script node-gyp
    npm install
    

Related:

OP在这里,自从我第一次问这个问题以来,我已经学到了更多关于节点的知识。虽然Dmitry的回答很有帮助,但最终为我做的是使用正确的权限安装node。

我强烈建议不要使用任何包管理器安装node,而是自己编译它,以便它驻留在具有正常权限的本地目录中。

这篇文章提供了非常清晰的一步一步的指导,如何做到这一点:

https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04 < a href = " https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04 " > < / >

当我试图使用root用户在运行CentOs的私有服务器上发布我的nodejs应用程序时,我也遇到了同样的问题。同样的错误被"postinstall": "触发。/node_modules/bower/bin/bower install"Json文件,所以唯一的解决方案,对我来说是使用这两个选项来避免错误:

1:对bower安装命令使用——allow-root选项

"postinstall": "./node_modules/bower/bin/bower --allow-root install"

2:为NPM安装命令使用——not - safe-perm选项

npm install --unsafe-perm

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

sudo chown -R my_name /usr/local

这允许我在没有sudo的情况下做所有事情

唯一对我有用的是添加一个.npmrc文件,其中包含:

unsafe-perm = true

将相同的配置添加到package.json没有任何效果。

~~ For Docker ~~!

< >强@Alexander米尔斯< / >强 answer -只是让它更容易找到:

RUN npm set unsafe-perm true