[英]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.