没有sudo更改前缀,无法npm安装-g

时间:2014-09-02 17:03:17

标签: node.js ubuntu npm

我已经这样做了:https://stackoverflow.com/a/21712034

现在我的npm配置如下:

 npm config get prefix
 /home/ranu/npm

但是当我跑npm install -g grunt-cli时,我得到了:

npm ERR! Error: EACCES, mkdir '/usr/lib/node_modules/grunt-cli'
npm ERR!  { [Error: EACCES, mkdir '/usr/lib/node_modules/grunt-cli']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/lib/node_modules/grunt-cli',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/lib/node_modules/grunt-cli',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23', 
npm ERR!      '/usr/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR!      'Object.oncomplete (fs.js:107:15)' ] } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 3.11.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "-g" "grunt-cli"
npm ERR! cwd /home/ranu
npm ERR! node -v v0.10.29
npm ERR! npm -v 1.4.14
npm ERR! path /usr/lib/node_modules/grunt-cli
npm ERR! fstream_path /usr/lib/node_modules/grunt-cli
npm ERR! fstream_type Directory
npm ERR! fstream_class DirWriter
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/usr/lib/node_modules/grunt-cli'
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/fstream/lib/dir-      writer.js:36:23
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/ranu/npm-debug.log
npm ERR! not ok code 0

为什么尝试在/ usr / lib / node_modules /上安装它,如果前缀设置为/ home / ranu / npm?

更新 我可以使用以下命令:

npm install --prefix="/home/ranu/npm" -g grunt-cli

有什么方法可以将其作为默认设置吗?

2 个答案:

答案 0 :(得分:1)

每次我买一台新机器时,都会碰到这个。

我引用此网址fixing-npm-permissions,因为它实际上是NPM的文档,但也因为它是解决我的问题的唯一方法。不是第一个搜索结果,而是对我来说最简单的修复。我确信有更强大的修复方法。

我建议你去阅读它,而不是复制和粘贴。

我遵循了第1步,虽然按照它们的说法它应该有效。但是,我最终也使用了第2步获胜。

答案 1 :(得分:1)

您可以使用NVM(节点版本管理器),您永远不必为npm commands

打扰sudo