PM2和巴贝尔总是“港口正在使用”
我一直在使用PM2运行和监控节点进程一段时间,它工作正常,直到我尝试使用巴贝尔。
我不确定什么是真正的问题,但是当我用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
启动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