我在Node.js上运行了一个基于Express.js的应用程序。
现在,我想用pm2来结束它。为此,我定义了ecosystem.json:
{
"apps": [
{
"env": {
"NODE_ENV": "development",
"PORT": "3000"
},
"env_production": {
"NODE_ENV": "production"
},
"exec_mode": "cluster",
"instances": 0,
"name": "myapp",
"node_args": [
"--experimental-json-modules",
"--gc_interval=100",
"--max_old_space_size=512",
"--optimize_for_size"
],
"script": "./src/server/bin/www.mjs",
"watch": true
}
]
}
在package.json中,我指定了一个scripts
-section:
"scripts": {
"start": "pm2 start ecosystem.json"
},
在IDE中,我配置了一个npm脚本运行配置:
现在,当我单击时,pm2启动并显示正确的运行进程摘要:
但是,当我尝试在浏览器(127.0.0.1:3000
或localhost:3000
)中打开应用程序时,我得到ERR_CONNECTION_REFUSED
,无法访问此网站。
看起来,应用程序不再侦听端口3000。
如何访问pm2中运行的应用?
P.S.基于Nodejs + expressjs - pm2 and forever don't work?,我已经检查过了,我运行了"script": "./src/server/bin/www.mjs"
,所以我假设,pm2得到了到bin/www.mjs
的正确路径。
1条答案
按热度按时间jdg4fx2g1#
在更详细地研究了这个案例之后,我在控制台中得到了
ERR_UNSUPPORTED_ESM_URL_SCHEME
。问题的根源在PM2的一侧。问题是,目前"exec_mode": "cluster"
不工作,而"exec_mode": "fork"
可以使用没有任何问题。由于某种原因,这个issue已经被关闭,而事实上,似乎修复尚未发布。