【问题标题】:NestJS Application build on Heroku crashes because of TypeOrmModule with no precise error message由于 TypeOrmModule 没有准确的错误消息,Heroku 上构建的 NestJS 应用程序崩溃
【发布时间】:2020-10-28 20:54:04
【问题描述】:

我有一个基于 NestJS 的工作应用程序,它部署在 Heroku 服务器上。它曾经可以工作,直到最近我所做的每个构建都没有充分的理由崩溃。我做了一些试验,发现当TypeOrmModule 不包含在AppModule 导入中时,该应用程序可以工作,但显然没有数据库它是无法使用的。 AppModule 配置如下所示:

const databaseUrl = process.env.DATABASE_URL;
@Module({
  imports: [
    TypeOrmModule.forRoot(databaseUrl ? {
      type: 'postgres',
      url: databaseUrl,
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
   } : {
      // configuration for local development
   }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

我已经检查过,databaseUrl 正在从环境 URL 正确加载。这不是一个剥离的展示示例,这实际上是我部署到 Heroku 的内容 - 我已经删除了所有其他模块以了解问题出在哪里。如果我现在删除TypeOrmModule,应用程序不会崩溃。这是 heroku 在崩溃时为我提供的无用日志:

2020 年 7 月 8 日下午 12:09:13 [NestFactory] ​​正在启动 Nest 应用程序... 2020-07-08T12:09:13.300817+00:00 app[web.1]: [Nest] 23
07/08/2020, 12:09:13 PM [InstanceLoader] TypeOrmModule 依赖项已初始化 +76ms 2020-07-08T12:09:13.301462+00:00 app[web.1]: [Nest] 23
2020 年 7 月 8 日,下午 12:09:13 [InstanceLoader] AppModule 依赖项已初始化 +1ms 2020-07-08T12:09:13.416093+00:00 heroku[web.1]:进程以状态 0 退出 2020-07-08T12:09:13.463362+00:00 heroku[web.1]:状态从开始变为崩溃 2020-07-08T12:09:13.463362+00:00 heroku[web.1]:状态从开始变为崩溃

应用启动前的构建已成功在同一日志中显示。一个多月来,我真的很茫然。

【问题讨论】:

  • 你有机会分享复制品吗?指向您的存储库或类似内容的链接?
  • 我可以尝试,但实际上我的应用程序只是基本生成的 Nest 应用程序 + 导入的 TypeOrmModule。即使没有实体,它也会崩溃。所以我认为服务器配置中的某些内容可能不正确,但显然我无法共享凭据。所以我在这里不知所措。
  • 您是否尝试过从本地计算机连接到该数据库?可能连接url字符串有问题?
  • "status 0" 表示没有错误,似乎您的进程只是退出了。您是否正确调用app.listen(process.env.PORT)?您应该发布您的整个设置、package.json、引导函数等。

标签: typescript heroku nestjs


【解决方案1】:

你可以在你的 ma​​in.ts 中尝试这个来获取这种情况的日志:

process.on('uncaughtException', (err) => {
   Logger.warn(err, 'LOGGER', false);
});

如果还不够,可以参考这里添加其他事件进行调试:

https://nodejs.org/api/process.html#process_process_events

请检查您的 tsconfig.json 文件如果您有 任何迁移 模块和目标应该是这样的:

"target": "es2015",
"module": "CommonJS",

最后一件事:确保您的数据库名称与 TypeORM 配置匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多