2014-09-28 22 views
11

Nel mio HTTP Status Check project:cmd run npm fallisce mentre cmd sulla riga di comando funziona

Se corro node_modules/.bin/jshint . ottengo:

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

1 error 

Si esegue correttamente e produce i risultati attesi: 1 errore.

Ma se aggiungo che comando per package.json e cercare di eseguirlo tramite npm run allora funziona e produce i risultati attesi, ma segue anche che con un gruppo di errori:

$ 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 

Questo è come è definito in package.json:

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

Cosa ho fatto di sbagliato?

+0

Cosa succede se si esegue 'npm jshint'? –

+0

@RodrigoMedeiros - Ti dà la sintassi della guida per npm - come l'esecuzione di 'npm --help' – Guy

risposta

14

Non uscire con un codice di errore diverso da zero a meno che non lo si intenda veramente. Tranne che per gli script di disinstallazione, ciò causerà il fallimento dell'azione npm e il potenziale ripristino. Se l'errore è minore o solo impedirà alcune funzionalità opzionali, allora è meglio stampare semplicemente un avviso ed uscire con successo.

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

Usa:

node_modules/.bin/jshint .; true 

O scrivere un wrapper che chiama jshint e quindi ignora il codice di uscita ed esce con successo con un codice di uscita pari a zero.

+2

questo è esattamente ciò di cui avevo bisogno –

+3

Qualcuno può spiegare perché è necessario? Sono appena arrivato qui alla ricerca di una soluzione a questo stesso problema, volevo evitare di dover forzare il ritorno vero se possibile. – brandon927

+1

Qualcuno ha una risposta compatibile con Windows? –