如何在不出错的情况下安装grunt-cli?

时间:2013-12-12 22:29:43

标签: node.js bash gruntjs

受到Chris Coyier post的启发,我决定放弃咕噜咕噜。但是我在设置方面遇到了很大的问题。

首先,我安装了Node。

然后我将package.json文件添加到我的项目根目录,包括:

{
  "name": "example-project",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.1"
  }
}

然后我跑了npm install

最后,我跑了npm install -g grunt-cli

带来了大量错误:

npm http GET https://registry.npmjs.org/grunt-cli
npm http 304 https://registry.npmjs.org/grunt-cli
npm ERR! 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: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 Darwin 11.4.2
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "grunt-cli"
npm ERR! cwd /Users/bryce/repo
npm ERR! node -v v0.10.23
npm ERR! npm -v 1.3.17
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: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!     /Users/bryce/repo/npm-debug.log
npm ERR! not ok code 0
Bryce:repo bryce$ npm install -g grunt-cli
npm http GET https://registry.npmjs.org/grunt-cli
npm http 304 https://registry.npmjs.org/grunt-cli
npm ERR! 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: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 Darwin 11.4.2
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "grunt-cli"
npm ERR! cwd /Users/bryce/repo
npm ERR! node -v v0.10.23
npm ERR! npm -v 1.3.17
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: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!     /Users/bryce/repo/npm-debug.log
npm ERR! not ok code 0

我认为上述错误是我尝试运行grunt的原因,我只是得到-bash: grunt: command not found

那里的任何人都知道发生了什么事?

6 个答案:

答案 0 :(得分:12)

所有这一切都是添加'sudo',因为我没有默认安装grunt-cli的权限。运行以下命令并输入密码后,它按预期工作。

sudo npm install -g grunt-cli

希望这有助于某人!

答案 1 :(得分:9)

编辑: 下面引用的文章很老,指的是v0.3之前 Yikes!目前,如果npmsudo权限运行,它将在执行前降级为nobody用户命令。

根据npm的维护者,使用sudo安装软件包被认为是不好的做法,因为您允许该软件包完全控制您的系统,您不能也不应该信任这些软件包具有root访问权限的包。

http://howtonode.org/introduction-to-npm

答案 2 :(得分:1)

由于您不应该使用sudo进行安装 - 您将在安装软件包之前执行此操作,并且不再会遇到权限错误:

sudo chown -R $ USER / usr / local

来源:https://howtonode.org/introduction-to-npm

答案 3 :(得分:0)

我建议在项目中安装grunt(而不是使用-g选项)。

例如,要安装Grunt命令行工具,请使用:

cd ~/path-to-my-project
npm install grunt-cli --save-dev

如果您想运行grunt,请使用:

cd ~/path-to-my-project
./node_modules/./bin/grunt

通过在项目中安装grunt-cli,您可以完全控制安装的版本,而不必依赖于不一致的PATH变量。

答案 4 :(得分:0)

我也遇到了这个问题,在仔细阅读输出后,我意识到我安装的node.js版本与当前版本的grunt-cli不兼容。

已解决更新的node.js问题。

答案 5 :(得分:-1)

在项目文件夹中安装grunt的命令是:

User.create(username:<whatever>,password:<whatever>)