我有一个.env
文件位于我的 NestJs 项目的根目录中,其中包含一些环境变量。
奇怪的是,我能够读取服务文件中的变量,但不能读取模块文件中的变量。
所以在像这样的服务文件中users.service.ts
,这有效:
saveAvatar() {
const path = process.env.AVATAR_PATH // returns value from .env
}
但是,当访问模块文件中的路径时,例如auth.module.ts
,这将返回一个空值:
@Module({
imports: [
JwtModule.register({
secretOrPrivateKey: process.env.SECRET // process.env.SECRET returns an empty string
})
]
})
为什么会这样?如何可靠地访问环境变量.env
NestJs 中的文件?
Your .env
当您的文件尚未读入时JwtModule
被实例化。所以要么早点读它,例如在你的main.ts
在创建 Nest 应用程序之前或更好:创建一个ConfigService
并明确对您的配置的依赖:
JwtModule.registerAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
secret: configService.jwtSecret,
}),
inject: [ConfigService],
}),
See 这个答案 https://stackoverflow.com/a/54364907/4694994关于如何创建一个ConfigService
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)