不同的环境在Nestjs中不起作用
我想创建一个新的环境来测试我的应用程序。我有一个.env
文件和.env.test
文件。
这是我的app.module.ts
file:
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: !process.env.NODE_ENV
? '.env'
: `.env.${process.env.NODE_ENV}`,
}),
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.POSTGRES_HOST,
port: parseInt(<string>process.env.POSTGRES_PORT),
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
autoLoadEntities: true,
entities: [User],
synchronize: true,
}),
AuthModule,
],
controllers: [],
providers: [],
})
export class AppModule {}
问题是.env.test
从未调用,.env
始终运行,即使process.env.node_env
返回test
。 这就是我设置我的package.json
文件的方式:
"start:test": "NODE_ENV=test nest start --watch",
这就是我的.env.test
文件的方式,就像
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=Random
POSTGRES_DATABASE=db-test
我也尝试使用硬码envfilepath:'。 env.test',
,它仍然不起作用。对于.env.test
要工作的文件,我必须重命名.env
文件,然后效果很好。
更新!
它现在有效。我所做的是放入
ConfigModule.forRoot({
envFilePath: !process.env.NODE_ENV
? '.env'
: `.env.${process.env.NODE_ENV}`,
}),
应用程序中的每个模块中。
I would like to create a new environment for testing my app. I have a .env
file and .env.test
file.
This is my app.module.ts
file:
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: !process.env.NODE_ENV
? '.env'
: `.env.${process.env.NODE_ENV}`,
}),
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.POSTGRES_HOST,
port: parseInt(<string>process.env.POSTGRES_PORT),
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
autoLoadEntities: true,
entities: [User],
synchronize: true,
}),
AuthModule,
],
controllers: [],
providers: [],
})
export class AppModule {}
The problem here is that .env.test
is never called, .env
always runs even though process.env.NODE_ENV
returns test
.
And this is how i set up my package.json
file:
"start:test": "NODE_ENV=test nest start --watch",
This is how my .env.test
file looks like
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=Random
POSTGRES_DATABASE=db-test
I also tried to hardcode envFilePath: '.env.test',
and it still not working. For .env.test
file to work i have to rename .env
file and then it works fine.
UPDATE!
It works now. What i did was i put
ConfigModule.forRoot({
envFilePath: !process.env.NODE_ENV
? '.env'
: `.env.${process.env.NODE_ENV}`,
}),
in every module i have in my app.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您使用
configModule
时,大概是从@nestjs/config
使用typeormmodule
'sforRootAsyAsync
确保您使用read.env
文件的方法。As you're using the
ConfigModule
presumably from@nestjs/config
you should be using theTypeormModule
'sforRootAsync
method to make sure you use the read.env
file.