我有一个在 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 中运行的应用程序?
附注基于Nodejs + expressjs - pm2 and forever don't work? ,我已经检查过,我运行 "script": "./src/server/bin/www.mjs"
,所以我假设 pm2 获得了正确的路径bin/www.mjs
。
最佳答案
更详细地研究该案例后,我在控制台中收到 ERR_UNSUPPORTED_ESM_URL_SCHEME
。问题的根源在于PM2一方。问题是目前 "exec_mode": "cluster"
不起作用,而 "exec_mode": "fork"
可以毫无问题地使用。
出于某种原因,这个 issue已解决并关闭,但事实上修复似乎尚未发布。
关于node.js - PM2:无法访问应用程序(ERR_CONNECTION_REFUSED),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68109551/