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
我一直在使用 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