【发布时间】:2018-10-02 04:46:13
【问题描述】:
遵循本指南:https://docs.nestjs.com/techniques/sql
当我尝试在连接选项中使用 process.env.DB_PASS 时,没有密码被传递到 mysql。当我传递一个原始字符串时,它可以工作。 Dotenv 配置是在创建嵌套应用程序模块之前完成的。
正确执行此操作的最佳方法是什么?
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
username: 'root',
password: process.env.DB_PASS,
database: 'dbname',
entities: ['./models/*.entity{.ts,.js}'],
synchronize: true
})
],
controllers: [],
components: []
})
export class AppModule implements NestModule {...}
【问题讨论】:
-
我们在对
forRoot的调用中使用了环境变量,它可以工作。我假设您的模块文件(包含此代码的打字稿文件)已导入 (import) before dotenv 完成工作。dotenv应该是您的应用程序导入/完成的第一件事,除非您有充分的理由去做其他事情。 -
成功了,谢谢!我在考虑错误的操作顺序。元数据解析似乎发生在 NestFactory.create(AppModule) 之前,所以我将 dotenv.config() 移到了应用程序模块导入的上方,而不是在 NestFactory.create(AppModule) 之前。