【发布时间】: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