簡體   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