gpt4 book ai didi

javascript - 即使在解析后,ConfigService仍返回字符串值

转载 作者:行者123 更新时间:2023-12-03 08:34:49 27 4
gpt4 key购买 nike

所以,这是我的 NEST JS 基本应用程序。

./shared/utils/config/index.ts

export default  () => ({
PORT: parseInt(process.env.PORT, 10) || 3000,
TO_PRINT_RESPONSE: JSON.parse(process.env.TO_PRINT_RESPONSE),
});

app.module.ts

import CONFIG from './shared/utils/config/';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
load: [ CONFIG ],
})
]
// some more Module Decorator Config
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(AuthMiddleware)
.forRoutes({ path: '/someurl', method: RequestMethod.ALL });
// some more configuration code.
}
}

ma​​in.ts

// AppModule is app.module.ts imported variable
import { ConfigService } from '@nestjs/config';

async function bootstrap() {
const app: INestApplication = await NestFactory.create(AppModule, {
logger: console,
});

const configService = app.get(ConfigService);
console.log(typeof configService.get<Boolean>('TO_PRINT_RESPONSE'));

/* this is coming as String even when:
* 1. I place <Boolean> as a type (I know its of no use, since it does not change the datatype)
* 2. But in config/index.ts I parsed it in BOOLEAN using JSON.parse()
*/
}
bootstrap();

.env

 PORT=5000
TO_PRINT_RESPONSE=true

现在:

  1. .env 正在通过 dotenv 模块加载,如所写 ( https://docs.nestjs.com/techniques/configuration )
  2. 将调试保存在 ./shared/utils/config/index.ts 中,并且它正在受到攻击。

所以,请有人告诉我,当我以正确的格式加载 JSON 时,我在以正确的数据类型读取 ENV 值时哪里做错了(./shared/utils/config/index.ts )。

谢谢,编码愉快:)

最佳答案

问题是 Nest 的 ConfigService 不会覆盖它从环境中读取的值,因此它们的类型将始终默认为 string

但是,您可以做的是将解析后的值分配给配置工厂中的不同属性:

export default  () => ({
port: parseInt(process.env.PORT, 10) || 3000,
toPrintResponse: JSON.parse(process.env.TO_PRINT_RESPONSE),
});

如果您随后访问这些值,类型将是正确的:

console.log(typeof configService.get('toPrintResponse')); // prints boolean
console.log(typeof configService.get('port')); // prints number

关于javascript - 即使在解析后,ConfigService仍返回字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64214369/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com