[英]docker node app always crashes on file change using nodemon
我正在使用最新版本的docker和最新的节点映像。 我有一个启动nodemon进程的gulpfile。 我使用--inspect标志来表示我想使用实验性的chrome dev工具调试器。 但是当我更改文件时,nodemon会将其选中并重新启动进程但崩溃。
这是我的gulp任务:
gulp.task('start:dev', done => {
let started = false;
nodemon({
script: path.join(__dirname, 'index.js'),
ext: 'js json',
nodeArgs: ['--inspect=0.0.0.0:9229'],
watch: path.join(__dirname, 'express'),
legacyWatch: true
})
.on('start', () => {
// to avoid nodemon being started multiple times
if (!started) {
setTimeout(() => done(), 100);
started = true;
}
});
});
这是错误:
Starting inspector on 0.0.0.0:9229 failed: address already in use
如果我将--inspect
标志更改为--debug
它就像一个魅力。
我猜测重启过程对于--inspect
释放其端口来说太快了。 如果我进行另一个文件更改它会工作并正常重新启动。 可能因为它有时间释放端口。
我试过在nodemon上使用延迟,但我宁愿不这样做。 我想快速重启。 我已经尝试使用事件,比如,重启和退出,等待几秒钟,然后重新启动整个gulp任务。 但这是不稳定的,我想再次快速重启,而不必破解一些东西。
现在我刚刚切换回--debug
但在最新的V8中已弃用。 他们建议使用--inspect
。
也许唯一的办法是锁定我的节点版本?
有什么建议?
只需杀死检查员并再次启动检查员,这是我们团队在package.json
的解决方案。 您最好终止检查程序进程,然后重新启动检查程序
"inspect": "kill-port --port 9229 && node --inspect=0.0.0.0:9229 build/startup.js", "start_watch_inspect": `nodemon --delay 80ms --watch build/ build/startup.js --exec 'npm run inspect'`
这似乎与以下内容有关: https : //github.com/remy/nodemon/issues/1492
我的解决方法是在每次重启之前运行它:(在makefile,gulp文件等......)
lsof -i -n | grep 9229 | awk '{print $2}' | xargs kill
**如果放入Makefile内,请记得用$$替换$ **
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.