PM2 和 babel 总是 "Port is in use"

PM2 and babel always "Port is in use"

我一直在使用 PM2 运行 和监控节点进程一段时间,在我尝试使用 babel 之前它工作正常。

我不确定真正的问题是什么,但是当我用 babel 启动一个项目时,它无法停止显示 Port 3000 is already in use

这个项目是另一个项目的副本。除了 package.json.

中的 scripts 外,它们几乎相同
"scripts": {
    "start": "npm run babel | node ./bin/www",
    "babel": "./node_modules/.bin/babel server -d lib"
}

而原来的就简单多了

"scripts": {
    "start": "node ./bin/www"
  }

我使用 run process.json 启动进程,并使用 babel 在项目中添加 "exec_interpreter": "babel-node"

我还在复制项目中安装了一些新包,包括 babel、babel-core、babel-loader、react、react-dom、react-hot-loader、webpack 和 webpack-dev-server。我将代码从 ES5 更改为 ES6,这就是我使用 babel 的原因。(是的,我正在尝试使用基于普通 express 项目的 react 和 transfer to ES6)

当我重新启动 mac 和 运行 没有 babel 的原始项目时,一切都很好。然后我停止这个过程并继续用 babel 启动项目,它一直抛出 Port 3000 is already in use.

COMMAND    PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Google     394 brick   14u  IPv6 0x432e592f22d3b26b      0t0  TCP localhost:52261->localhost:hbci (CLOSE_WAIT)
Google     394 brick   16u  IPv6 0x432e592f22d397ab      0t0  TCP localhost:52262->localhost:hbci (CLOSE_WAIT)
Google     394 brick  213u  IPv6 0x432e592f246f87ab      0t0  TCP localhost:52264->localhost:hbci (CLOSE_WAIT)
node      1210 brick   13u  IPv6 0x432e592f22d377ab      0t0  TCP *:hbci (LISTEN)

我在 shell 中使用 lsof -i:3000,它显示有一个节点进程和 2-3 个名为 Google 的进程(我正在使用 chrome)正在使用港口。即使我杀死了进程,它也会重新出现(使用不同的 pid)。

我不知道有什么问题。

已在 GitHub 中解决此问题。这确实是 come case babel 的事情。解决方法之一是在入口文件中使用 babel 的 require hook

可以在这里阅读更多讨论:https://github.com/Unitech/pm2/issues/1643