繁体   English   中英

docker node app总是使用nodemon在文件更改时崩溃

[英]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内,请记得用$$替换$ **

这里是一个开放的问题,解决这一问题。

到目前为止我发现的最简单的解决方法是在我的nodemon.json中使用"signal": "SIGINT" ,这要归功于这个评论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM