NestJs:无法读取模块文件中的环境变量,但可以读取服务文件中的环境变量?

2024-03-12

我有一个.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
       })
    ]
})

为什么会这样?如何可靠地访问环境变量.envNestJs 中的文件?


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(使用前将#替换为@)

NestJs:无法读取模块文件中的环境变量,但可以读取服务文件中的环境变量? 的相关文章

随机推荐