操作系统: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
,但也出现了错误。
答案 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中所指出的那样,但这可能会很好,具体取决于您的情况(在我的本地开发机器上适用于我)。