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


在我的 HTTP状态检查项目

如果我跑 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 .",
  },

我做错了什么?


1710
2017-09-28 19:26


起源

如果你跑了怎么办? npm jshint? - Rodrigo Medeiros
@RodrigoMedeiros - 它为你提供了npm的帮助语法 - 和运行一样 npm --help - Guy


答案:


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

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

使用:

node_modules/.bin/jshint .; true

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


14
2017-09-29 14:59



这正是我所需要的 - Harry Moreno
谁能解释为什么这是必要的?刚刚来到这里寻找同一问题的解决方案,希望尽可能避免强制返回true。 - brandon927
有没有人有Windows兼容的答案? - Logan Pickup