【发布时间】:2020-03-12 06:41:03
【问题描述】:
我在director的根目录中有我的环境变量和以下配置文件作为模块导入。
/config/config.service.ts
// NPM Packages
import * as dotenv from 'dotenv';
import * as fs from 'fs';
import * as Joi from '@hapi/joi';
export type EnvConfig = Record<string, string>;
export class ConfigService {
private readonly envConfig: EnvConfig;
constructor(filePath: string) {
const config = dotenv.parse(fs.readFileSync(filePath));
this.envConfig = this.validateInput(config);
}
/**
* Ensures all needed variables are set,
* and returns the validated JavaScript object
* including the applied default values.
*/
private validateInput(envConfig: EnvConfig): EnvConfig {
const envVarsSchema: Joi.ObjectSchema = Joi.object({
NODE_ENV: Joi.string()
.valid('development', 'production', 'test', 'provision')
.default('development'),
PORT: Joi.number().default(3000),
MONGO_URI: Joi.required(),
API_AUTH_ENABLED: Joi.boolean().required(),
IS_AUTH_ENABLED: Joi.boolean().required(),
JWT_SECRET: Joi.required(),
JWT_EXPIRE: Joi.required(),
JWT_COOKIE_EXPIRE: Joi.required(),
});
const { error, value: validatedEnvConfig } = envVarsSchema.validate(
envConfig,
);
if (error) {
throw new Error(`Config validation error: ${error.message}`);
}
return validatedEnvConfig;
}
get(key: string): string {
return this.envConfig[key];
}
}
/config/config.module.ts
// Core Packages
import { Module } from '@nestjs/common';
// Custom Packages
import { ConfigService } from './config.service';
@Module({
providers: [
{
provide: ConfigService,
useValue: new ConfigService(
`${process.env.NODE_ENV || 'development'}.env`,
),
},
],
exports: [ConfigService],
})
export class ConfigModule {}
我已经在 app.modules 中全局导入如下
@Module({
imports: [ConfigModule]
})
在我的数据库提供程序 src/database/database.providers.ts 我尝试导入 MONGO_URL 变量,但出现错误。
// NPM Packages
import * as mongoose from 'mongoose';
// Custom Packages
import { envConfig } from '../config/config.service';
const mongoUrl: string = envConfig.get('MONGO_URI');
export const databaseProviders = [
{
provide: 'DATABASE_CONNECTION',
useFactory: async (): Promise<typeof mongoose> =>
await mongoose.connect(mongoUrl, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
}),
},
];
错误:
类型“typeof ConfigService”.ts(2339) 上不存在属性“get”
【问题讨论】:
-
错误信息是什么?
-
@SafiNettah 属性 'get' 在类型 'typeof ConfigService'.ts(2339) 上不存在
-
声明你的
get喜欢static get -
@SafiNettah 没有帮助。我对如何将配置导入数据库提供程序文件感到困惑。然后调用钥匙
标签: node.js typescript environment-variables nestjs