Почему Грунт терпит неудачу?
Я получаю странную ошибку после запуска npm run-script grunt
, в которой он сообщает мне, что node_modules/.bin/grunt
терпит неудачу.
Я следую учебному пособию, как im довольно новый для 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 [email protected]
3 info using [email protected]
4 verbose read json /Users/Keva161/Documents/Web Dev/Webapps/Node/btask/package.json
5 verbose run-script [ 'pregrunt', 'grunt', 'postgrunt' ]
6 info pregrunt [email protected]
7 info grunt [email protected]
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 [email protected] Failed to exec grunt script
12 error [email protected] grunt: `node_modules/.bin/grunt`
12 error `sh "-c" "node_modules/.bin/grunt"` failed with 2
13 error Failed at the [email protected] 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 ]
Ответы
Ответ 1
В учебнике, о котором вы говорите, используется grunt 0.3.
С тех пор Grunt обновился, и если вы используете "grunt": "последний" в вашем файле package.json, вы по умолчанию получите grunt 0.4.
Вы можете перейти в руководство по миграции, чтобы заставить все работать.
Чтобы просто получить ворчание для учебника, вы можете это сделать -
- Установить grunt-cli глобально
npm install -g grunt-cli
- Установить grunt-init глобально
npm install -g grunt-init
- Установить grunt локально (уже установлено, если вы следовали учебному курсу)
- Измените
"grunt": "node_modules\\.bin\\grunt"
в package.json на "grunt": "grunt"
- Переименуйте grunt.js в корневой каталог в Gruntfile.js
- Измените
grunt.registerTask('default', 'exec copy-require');
в файле Gruntfile.js на grunt.registerTask('default', ['exec','copy-require']);
- Запустите
npm run-script grunt
, как обычно, в командной строке. Теперь все должно быть хорошо.
Вы получите каталог сборки с сборкой r.js.
Если вы все еще не можете заставить его работать каким-либо образом с вышеуказанными шагами, вы можете изменить grunt: "latest"
на grunt : "0.3"
в файле package.json и запустить npm install
в оболочке.
Ответ 2
arunkjn ответ решит проблему. Хотя в соответствии с намерениями, автор не хотел устанавливать grunt во всем мире, и это то, что я собираюсь сделать. Благодаря arunkjn, я подумал, что вы также можете:
- Установить grunt-cli локально
npm install grunt-cli
- Переименуйте grunt.js в корневой каталог в Gruntfile.js
- Измените
grunt.registerTask('default', 'exec copy-require');
в Gruntfile.js на grunt.registerTask('default', ['exec','copy-require']);
И снова npm run-script grunt
, и он должен работать.
Ответ 3
Я использую grunt и npm какое-то время, и я никогда не использовал run_script
. Может быть, попробуйте это?
Часть scripts
обычно используется для работы на удаленном сервере (например, Heroku или Travis)
Удалите блок scripts
.
Тогда do
npm install -g grunt
Мне нужно перезапустить терминал после этого.
cd myproject
npm install
grunt mytask