Подтвердить что ты не робот

Почему Грунт терпит неудачу?

Я получаю странную ошибку после запуска 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 ]
4b9b3361

Ответ 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