Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在NestJS生产构建中未拾取typerm.env config_Typescript_Environment Variables_Nestjs_Typeorm - Fatal编程技术网

Typescript 在NestJS生产构建中未拾取typerm.env config

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

我正在开发一个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 (/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: ...
    },
});