PM2和巴贝尔总是“港口正在使用”

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

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

这个项目是另一个的副本。 除了package.jsonscripts ,它们几乎是一样的。

 "scripts": { "start": "npm run babel | node ./bin/www", "babel": "./node_modules/.bin/babel server -d lib" } 

原来简单得多

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

我使用run process.json启动run process.json ,并在"exec_interpreter": "babel-node"项目中添加"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来启动这个项目,它不停地抛出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。 这确实是来吧巴贝尔的事情。 其中一个解决方法是在入口文件中使用babel的require钩子 。

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