PM2和babel总是" Port正在使用"

时间:2015-10-27 22:51:09

标签: node.js babeljs pm2

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

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

这个项目是另一个项目的副本。除scripts中的package.json外,它们几乎相同。

"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。(是的,我尝试使用反应并根据正常的快递项目转移到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)。

我不知道问题是什么。

1 个答案:

答案 0 :(得分:2)

在GitHub解决了这个问题。这确实是贝壳的事情。其中一个解决方法是在条目文件中使用babel的require hook

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