我有一个奇怪的问题,我一直在挠头。我有一个快递应用,在生产模式下使用pm2
cross-env NODE_ENV=production pm2 start ./src/index.js
这在本地效果很好。但是,当我将此部署到Azure App服务时,该容器不断崩溃。我可以在日志中看到pm2进程成功启动,但是应用程序随后崩溃并显示以下错误消息
容器未响应端口8080上的ping操作
我尝试将WEBSITES_PORT
设置为8080
,并且尝试使用process.env.PORT
并将端口硬编码为8080
,但是没有任何效果。
有人知道是什么原因吗?我宁愿不必在生产中的节点上运行应用程序。
更新 我只是用supervisor尝试了一下,结果也一样。看起来过程管理器有些问题,也许在这里吗?
答案 0 :(得分:1)
每当启动node
服务器时,都应指定环境中提供的端口。
基本示例:
const LOCAL_APP_PORT = 9300;
server.create({ port: process.env.port || LOCAL_APP_PORT })
注意:为了调试是否与pm2
相关,请尝试使用node
命令简单地启动它。
更新
根据您的最新评论。我认为问题可能是pm2
在默认情况下自行守护。您可以尝试将--no-daemon
标志传递给pm2
命令吗?