问题描述
我在我的根目录中创建了三个 env 文件:.env、.env.test、.env.prod。
.env 文件有
PORT=4000
DATABASE_URL="postgresql://postgres:1234@localhost:5432/postgres?schema=public"
JWT_SECRET="THIS_IS_A_SECRET_KEY_DEV_ENVIRONMENT"
JWT_EXPIRATION_TIME=3600
我的 .env.test 有
PORT=4001
DATABASE_URL="postgresql://postgres:1234@localhost:5432/postgres?schema=public"
JWT_SECRET="THIS_IS_A_SECRET_KEY_TEST_ENVIRONMENT"
JWT_EXPIRATION_TIME=2400
我的 app.moudle.ts 看起来像
const ENV = process.env.NODE_ENV;
console.log(ENV);
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: !ENV ? '.env' : `.env.${ENV}`,load: [configuration],ignoreEnvFile: true,}),providers: [AppService],controllers: [AppController],})
export class AppModule {
constructor(private connection: Connection) {}
}
configuration.ts:
export default () => ({
port: parseInt(process.env.PORT,10) || 3000,jwt:{
secret:process.env.JWT_SECRET,expiresIn:process.env.JWT_EXPIRATION_TIME
}
});
我的脚本是:
"start:dev": "nest build && nest start --watch","start:test": "NODE_ENV=test nest start --watch",
控制器代码:
Logger.log(this.configService.get<string>('jwt.secret'));
当我在任何控制器中注入 conifgService 并尝试记录 jwt 密钥时,它总是从 .env 文件中获取密钥。即使我使用脚本 "start:test"
无论脚本/环境如何,它总是从 .env 文件中获取值 记录所有脚本“THIS_IS_A_SECRET_KEY_DEV_ENVIRONMENT”
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)