无法通过终端安装Grunt

时间:2014-10-20 12:20:15

标签: terminal gruntjs

操作系统:Mac

所以我试图通过在我的终端中键入以下内容来安装Grunt(通过/usr/local/bin):

npm install -g grunt-cli

但是我得到了这个结果:

Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/grunt-cli',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/grunt-cli',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/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:46: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 Darwin 13.4.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "grunt-cli"
npm ERR! cwd /usr/local/bin
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/grunt-cli
npm ERR! fstream_path /usr/local/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/local/lib/node_modules/grunt-cli'
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /usr/local/bin/npm-debug.log
npm ERR! not ok code 0

......这看起来不太开心!任何人都可以帮助我吗?

注意:我最初也尝试从usr开始,而没有/local/bin,但也出现了错误。

1 个答案:

答案 0 :(得分:0)

我得到了相同的结果(OSX 10.9.5)。你从哪里运行命令可能并不重要 - 我希望你能看到完全相同的路径错误输出。

问题似乎是npm希望将全局安装的软件包放在/usr/local//usr/local/bin)下,/usr/local/lib/node_modules中的可执行文件和* NIX系统上-g中的模块中,这里包括OSX)。这在Mac上无法写入您的用户。

您的选择可能只有几个:

您可以在项目中安装本地而不是全局(省略PATH)。这意味着您需要在要使用它的其他项目中重新安装该程序包。这也意味着当您访问项目时,您需要设置grunt以指向项目(export PATH=$PATH:./node_modules/bin)下的任何二进制文件(例如sudo),可以用脚本,但可能仍然很烦人。

您也可以使用npm config set prefix ~/npm重新安装,但是存在一些风险(https://www.npmjs.org/doc/files/npm-folders.html中指出)。

最后,您可以更改前缀' (通过{{1}}),如下所示:https://stackoverflow.com/a/25259232/1795230。这有一个缺点,即不是全球"对于真实的(仅对用户的所有项目都是全局的),如评论https://stackoverflow.com/a/21712034/1795230中所指出的那样,但这可能会很好,具体取决于您的情况(在我的本地开发机器上适用于我)。