npm run cmd在命令行上的cmd工作时失败

时间:2014-09-28 19:26:30

标签: node.js npm jshint exit-code

在我的HTTP Status Check project

如果我运行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

> http-status-check@0.0.5 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! http-status-check@0.0.5 jshint: `jshint .`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the http-status-check@0.0.5 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

这就是它在package.json中的定义:

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

我做错了什么?

1 个答案:

答案 0 :(得分:14)

  

除非您的意思是真的,否则不要使用非零错误代码退出。除卸载脚本外,这将导致npm操作失败,并可能会回滚。如果故障很小或只会阻止某些可选功能,那么最好只打印警告并成功退出。

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

使用:

node_modules/.bin/jshint .; true

或者编写一个调用jshint的包装器,然后忽略退出代码并成功退出,退出代码为零。