PM2:无法访问应用程序(ERR_CONNECTION_REFUSED)

问题描述 投票:0回答:2

我有一个在 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
部分:

"scripts": {
    "start": "pm2 start ecosystem.json"
},

在 IDE 中,我配置了 npm 脚本运行配置:

npm run

现在,当我单击时,pm2 启动并显示正确的运行进程摘要:

App [myapp] launched (4 instances)

但是,当我尝试在浏览器中打开应用程序(

127.0.0.1:3000
localhost:3000
)时,我得到
ERR_CONNECTION_REFUSED
,无法访问此网站。

看起来,该应用程序不再监听端口 3000。
我如何才能访问在 pm2 中运行的应用程序?

附注基于 Nodejs + expressjs - pm2 和永远不起作用?,我检查过,我运行

"script": "./src/server/bin/www.mjs"
,所以我假设,pm2 获得了
bin/www.mjs
的正确路径。

node.js express pm2
2个回答
4
投票

更详细地探索该案例后,我在控制台中得到

ERR_UNSUPPORTED_ESM_URL_SCHEME
。问题的根源在PM2一方。问题是目前
"exec_mode": "cluster"
不起作用,而
"exec_mode": "fork"
可以毫无问题地使用。

由于某种原因,这个问题已被关闭并解决,而事实上修复似乎尚未发布。


0
投票

我也遇到了同样的问题,我就是这样解决的。 当我在出现问题时检查 monit 时,仪表板内的活动句柄减少到 1。 正常情况下为 5。 pm2版本使用的是最新版本5.3.0。

https://i.stack.imgur.com/LiESI.png

© www.soinside.com 2019 - 2024. All rights reserved.