我意识到有很多相关的问题。没有,我发现这个问题。
当我的代码更改时,我希望我的进程在--debug
时重新启动。 package.json中有两个命令:
"debug-no-inspect": "API_PORT=5566 API_LOGLEVEL=DEBUG node --debug dist/index.js | bunyan -o short",
"watch": "watch 'npm run debug-no-inspect' ./src -d --wait=1",
确定这些工作很好,并且在没有--debug
的情况下正常工作,但--debug
会导致EADDRINUSE错误:
Error: listen EADDRINUSE :::5858
将时间增加到4秒没有做到。如果我按Ctrl-C并杀死手表并重新启动但它失败了它的工作正常。有没有办法在重新启动进程之前以编程方式释放该调试器端口而不会终止所有节点进程?
到目前为止我最好的做法是:在启动命令中添加一个愚蠢的env变量(ID=9877876
或FINDME=alksdjflaksjdfl
),然后使用它来稍后查找进程并在重新启动之前将其终止:
"watch": "watch 'kill $(ps a | grep [ID]=9877876 | cut -d \" \" -f 1) && npm run debug-no-inspect' ./src -d"
然而,这不起作用。该命令单独工作,但不适用于watch
。另一个图书馆是更好的选择吗?
节点6; OSX; bash的
答案 0 :(得分:0)
似乎解决方案是删除watch
并改为使用nodemon
:
package.json:
"watch": "nodemon -V -w config -w src -e coffee,yaml,properties --exec npm -- run debug",
工作得很好。