Angular 19.0 与 pm2 不兼容吗?

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

我无法让 pm2 使用新的 Angular 19.0 版本。

这是我尝试过的:

  • ng new app
  • ng build
  • pm2 start dist/server/server.mjs

节点服务器未侦听任何端口。 该进程在线显示在 pm2 中,但没有记录任何内容。

当我直接使用

node dist/server/server.mjs
启动服务器时,服务器会按预期启动并运行。 如果我降级到 Angular 18.2,服务器将像平常一样使用 pm2 运行。

环境:

  • 节点20.9.0
  • pm2 5.3.1
  • 角度19.0.0

我不知道发生了什么,因为日志是空的。我该如何调试这个?

angular server-side-rendering pm2 angular19
1个回答
0
投票

我会回答我自己的问题。 在创建新应用程序时默认生成的

server.ts
文件中,以下行出现在文件末尾:

/**
 * Start the server if this module is the main entry point.
 * The server listens on the port defined by the `PORT` environment variable, or defaults to 4000.
 */
if (isMainModule(import.meta.url)) {
  const port = process.env['PORT'] || 4000;
  app.listen(port, () => {
    console.log(`Node Express server listening on http://localhost:${port}`);
  });
}

isMainModule
函数来自
@angular/ssr
包,并且“确定提供的URL是否代表主入口点模块。” 然而,PM2 使用 Node 进程周围的容器来管理它(参见
pm2/lib/ProcessContainerFork.js
)。结果,该函数无法确定是主模块调用了它,条件永远不会满足,进程就在那里停止。

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