2014-09-28 1 views
11

В моих HTTP Status Check project:НПМ пробег CMD сбой в то время как CMD в командной строке работает

Если я бегу node_modules/.bin/jshint . я получаю:

$ node_modules/.bin/jshint . 
test/inAdapters_fileAdapter.js: line 73, col 31, Missing semicolon. 

1 error 

Он правильно выполняет и выдает ожидаемый результат: 1 ошибка.

Но если добавить эту команду в package.json и попытаться запустить его через npm run то он работает и производит ожидаемый выход, но также следует, что с кучей ошибок:

$ npm run jshint 

> [email protected] jshint /home/guy/source/http-status-check 
> jshint . 

test/inAdapters_fileAdapter.js: line 73, col 31, Missing semicolon. 

1 error 

npm ERR! Linux 3.13.0-24-generic 
npm ERR! argv "node" "/home/guy/local/bin/npm" "run" "jshint" 
npm ERR! node v0.10.31 
npm ERR! npm v2.0.0 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] jshint: `jshint .` 
npm ERR! Exit status 2 
npm ERR! 
npm ERR! Failed at the [email protected] jshint script. 
npm ERR! This is most likely a problem with the http-status-check package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  jshint . 
npm ERR! You can get their info via: 
npm ERR!  npm owner ls http-status-check 
npm ERR! There is likely additional logging output above. 

npm ERR! Please include the following file with any support request: 
npm ERR!  /home/guy/source/http-status-check/npm-debug.log 

Это, как это определенные в упаковке.json:

"scripts": { 
    "jshint": "node_modules/.bin/jshint .", 
    }, 

Что я сделал не так?

+0

Что делать, если вы запускаете 'npm jshint'? –

+0

@RodrigoMedeiros - Он дает вам синтаксис помощи для npm - так же, как работает 'npm --help' – Guy

ответ

14

Не выходите с ненулевым кодом ошибки, если вы на самом деле не имеете в виду его. За исключением сценариев удаления, это приведет к тому, что действие npm завершится неудачно и, возможно, будет отменено. Если отказ является незначительным или только предотвратит некоторые дополнительные функции, тогда лучше просто распечатать предупреждение и выйти успешно.

От https://www.npmjs.org/doc/misc/npm-scripts.html

Использование:

node_modules/.bin/jshint .; true 

Или написать оболочку, которая вызывает jshint, а затем игнорирует код выхода и успешно завершается с кодом выхода нуля.

+2

это именно то, что мне нужно –

+3

Может кто-нибудь объяснить, почему это необходимо? Просто пришел сюда в поисках решения этой же проблемы, хотел избежать необходимости принудительно возвращать истину, если это возможно. – brandon927

+1

Есть ли у кого-нибудь ответ, совместимый с Windows? –