Azure 应用服务与节点进程管理器中断但与节点一起工作

Azure app service breaks with node process managers but works with node

我有一个奇怪的问题,我一直在摸不着头脑。我有一个在生产模式下使用 pm2 的 express 应用程序

cross-env NODE_ENV=production pm2 start ./src/index.js

这在本地工作得很好。但是,当我将其部署到 Azure App 服务时,容器不断崩溃。我可以在日志中看到 pm2 进程成功启动,但应用程序随后崩溃并显示以下错误消息

Container didn't respond to pings on port 8080

我试过将 WEBSITES_PORT 设置为 8080,我试过使用 process.env.PORT 并将端口硬编码为 8080,但没有任何效果。

有谁知道可能是什么原因?我更喜欢不必 运行 生产中针对节点的应用程序。

更新 我刚刚用 supervisor 试了一下,得到了同样的结果。看起来流程管理器似乎有问题,也许吧?

无论何时启动 node 服务器,您都应该指定环境给定的端口。

基本示例:

const LOCAL_APP_PORT = 9300;

server.create({ port: process.env.port || LOCAL_APP_PORT })

注意:为了调试是否与pm2相关,例如尝试使用node命令简单地启动它。

更新

基于您最后的评论。我认为问题可能是 pm2 默认情况下自行守护。您可以尝试将 --no-daemon 标志传递给 pm2 命令吗?