Typescript 在NestJS生产构建中未拾取typerm.env config
我正在开发一个NestJS应用程序,通过TypeORM访问postgres数据库。在开发模式下一切都很好(Typescript 在NestJS生产构建中未拾取typerm.env config,typescript,environment-variables,nestjs,typeorm,Typescript,Environment Variables,Nestjs,Typeorm,我正在开发一个NestJS应用程序,通过TypeORM访问postgres数据库。在开发模式下一切都很好(npm运行开始:debug)。但是,在使用npm run build构建并尝试通过node/dist/main.js运行应用程序后,它无法启动,出现以下错误: error: password authentication failed for user "(my system user name)" at Parser.parseErrorMessage (/ho
npm运行开始:debug
)。但是,在使用npm run build
构建并尝试通过node/dist/main.js
运行应用程序后,它无法启动,出现以下错误:
error: password authentication failed for user "(my system user name)"
at Parser.parseErrorMessage (/home/(my system user name)/application/node_modules/pg-protocol/dist/parser.js:287:98)
app.module代码相当简单:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
...
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [
TypeOrmModule.forRoot(),
...
ConfigModule.forRoot({
isGlobal: true,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
TypeORM配置存储在.env
文件中。生成后,我还将其复制到dist
文件夹。从现在起,您就一直在努力实现这一点—不必通过.env
文件,只要它在开发和生产中都能工作。你知道为什么在生产中没有采用这种配置吗
编辑:我还尝试了其他几种配置方法,如中所述。部分在开发中工作,但从未在生产构建中工作。该问题与TypeORM/NestJS无关。我只是在应用程序的另一个地方使用了硬连线的配置。无论如何,这是最适合我需要的Nest配置:
import settings from './config/settings';
import { Module } from '@nestjs/common';
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';
import { ConfigModule, ConfigService } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot({
load: [settings],
isGlobal: true,
}),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (configService: ConfigService) =>
Object.assign({}, configService.get<TypeOrmModuleOptions>('database'), {
entities: [
(entity classes, auto-resolution does not work),
...
],
})
}),
...
],
controllers: [],
providers: [],
})
export class AppModule {}
将代码粘贴到传递envs到typeorm配置的位置。上面显示的代码甚至没有使用NETS ConfigModule/ConfigService。TypeORM配置是通过描述的env属性完成的。
.env
文件放在package.json
旁边。
export default () => ({
database: {
type: ...,
host: ...,
port: ...,
username: ...,
password: ...,
database: ...,
synchronize: ...,
logging: ...
},
});