我正在开发我的第一个NestJS应用程序,该应用程序与中的硬编码数据库连接字符串可以正常工作app.module.ts
。
但是然后根据我们的要求,我不得不从环境文件中选择数据库配置值。对于这一点,我也跟着nestjs文档网站上的配置文档- https://docs.nestjs.com/techniques/configuration
但是问题是我需要在同一文件中使用.env变量进行数据库连接,但失败了。
这是我正常工作的原始代码:
@Module({
imports: [
MongooseModule.forRoot(`mongodb+srv://myusername:[email protected]?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
ProductModule,
CategoryModule,
],
controllers: [
AppController,
HealthCheckController,
],
providers: [AppService, CustomLogger],
})
现在,我想根据环境从.env文件中选择那些DB值,例如local.env
,dev.env
等等。现在,我的这段代码无法正常工作:
@Module({
imports: [
ConfigModule.forRoot({ envFilePath: `${process.env.NODE_ENV}.env` }),
MongooseModule.forRoot(`mongodb+srv://${ConfigModule.get('DB_USER')}:${ConfigModule.get('DB_PASS')}@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
ProductModule,
CategoryModule,
],
controllers: [
AppController,
HealthCheckController,
],
providers: [AppService, CustomLogger],
})
1.使用 dotenv
npm install dotenv
向您的脚本中添加一些脚本,package.json
以设置您所处的环境。
"scripts": {
...
"start:local": "NODE_ENV=local npm run start"
"start:dev": "NODE_ENV=dev npm run start"
}
导入dotenv
的main.ts
文件。确保在文件顶部执行此操作。
require('dotenv').config({ path: `../${process.env.NODE_ENV}.env` });
2.使用 env-cmd
您可以使用env-cmd
npm软件包。
npm install env-cmd
并在中为不同的环境添加一些命令package.json
,例如:
"scripts": {
...
"start:local": "env-cmd -f local.env npm run start"
"start:dev": "env-cmd -f dev.env npm run start"
}
...
现在,您可以使用env变量,例如:
MongooseModule.forRoot(`mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' })
process.env.MONGO_CONNECTION_STRING
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句