运行npm run-script grunt
之后我发现一个奇怪的错误,它告诉我node_modules/.bin/grunt
失败。
我正在关注一个教程,因为它是Backbone(http://dailyjs.com/2012/11/29/backbone-tutorial-1/)的新手,
这是我的package.json
文件。
{
"name": "btask"
, "version": "0.0.1"
, "private": true
, "dependencies": {
"requirejs": "latest"
, "connect": "2.7.0"
}
, "devDependencies": {
"mocha": "latest"
, "chai": "latest"
, "grunt": "latest"
, "grunt-exec": "latest"
}
, "scripts": {
"grunt": "node_modules/.bin/grunt"
}
}
这是错误的完整记录。
0 info it worked if it ends with ok
1 verbose cli [ 'node',
1 verbose cli '/Users/Keva161/.nvm/v0.8.18/bin/npm',
1 verbose cli 'run-script',
1 verbose cli 'grunt' ]
2 info using npm@1.2.4
3 info using node@v0.8.18
4 verbose read json /Users/Keva161/Documents/Web Dev/Webapps/Node/btask/package.json
5 verbose run-script [ 'pregrunt', 'grunt', 'postgrunt' ]
6 info pregrunt btask@0.0.1
7 info grunt btask@0.0.1
8 verbose unsafe-perm in lifecycle true
9 silly exec sh "-c" "node_modules/.bin/grunt"
10 silly sh,-c,node_modules/.bin/grunt,/Users/Keva161/Documents/Web Dev/Webapps/Node/btask spawning
11 info btask@0.0.1 Failed to exec grunt script
12 error btask@0.0.1 grunt: `node_modules/.bin/grunt`
12 error `sh "-c" "node_modules/.bin/grunt"` failed with 2
13 error Failed at the btask@0.0.1 grunt script.
13 error This is most likely a problem with the btask package,
13 error not with npm itself.
13 error Tell the author that this fails on your system:
13 error node_modules/.bin/grunt
13 error You can get their info via:
13 error npm owner ls btask
13 error There is likely additional logging output above.
14 error System Darwin 12.2.1
15 error command "node" "/Users/Keva161/.nvm/v0.8.18/bin/npm" "run-script" "grunt"
16 error cwd /Users/Keva161/Documents/Web Dev/Webapps/Node/btask
17 error node -v v0.8.18
18 error npm -v 1.2.4
19 error code ELIFECYCLE
20 verbose exit [ 1, true ]
答案 0 :(得分:22)
您正在谈论的教程使用grunt 0.3。 Grunt从那时起已经更新,如果你在 package.json 文件中使用“grunt”:“latest”,那么默认情况下你会得到咕噜声0.4。
您可以通过migration guide来完成工作。
为了让这本教程变得笨拙,你可以这样做 -
npm install -g grunt-cli
npm install -g grunt-init
"grunt": "node_modules\\.bin\\grunt"
更改为"grunt": "grunt"
grunt.registerTask('default', 'exec copy-require');
更改为grunt.registerTask('default', ['exec','copy-require']);
npm run-script grunt
。现在情况应该很好。您将获得一个包含r.js build的构建目录。
如果您仍然无法通过上述步骤以某种方式使其工作,则可以在 package.json 文件中将grunt: "latest"
更改为grunt : "0.3"
并运行npm install
在壳中。
答案 1 :(得分:5)
arunkjn的答案将解决问题。虽然根据教程的意图,作者不想在全球安装grunt,这也是我的目的。感谢arunkjn,我想你也可以:
npm install grunt-cli
grunt.registerTask('default', 'exec copy-require');
更改为grunt.registerTask('default', ['exec','copy-require']);
然后再次npm run-script grunt
,它应该有用。
答案 2 :(得分:2)
我一直在使用grunt和npm一段时间了,而且我从未使用run_script
。也许试试这个?
scripts
部分通常用于在远程服务器上运行(即Heroku或Travis)
删除scripts
阻止。
然后做
npm install -g grunt
此后可能必须重新启动终端。
cd myproject
npm install
grunt mytask