Dotenv 变量未定义

Dotenv variable is undefined

我有一个模块(auth 模块),我在其中注册了 JwtModule:

JwtModule.register({
      secret: process.env.SECRET_KEY,
      signOptions: { expiresIn: '60m' },
    }),

注册函数如下所示:static register(options: JwtModuleOptions): DynamicModule;

JwtModule 定义在node_modules (jwt.module.js)

let JwtModule = JwtModule_1 = class JwtModule {
    static register(options) {
        console.log(options);
        console.log(process.env.SECRET_KEY);
        return {
            module: JwtModule_1,
            providers: jwt_providers_1.createJwtProvider(options)
        };
    }

在app.module.ts我有

ConfigModule.forRoot({
      isGlobal: true,
    }),

process.env.SECRET_KEY 在 node_modules 文件中未定义 (console.log(process.env.SECRET_KEY)),但定义了 signOptions: { expiresIn: '60m' }。

如果我尝试从 .env 写入控制台 SECRET_KEY,其他任何地方都已定义,但在 node_modules 中未定义。

ConfigModuleConfigService运行sdotenvconfig()方法,但是所有装饰器同时运行 , 所以 config() 方法还没有被调用。您可以改用异步注册并像这样使用 ConfigService

JwtModule.registerAsync({
  inject: [ConfigService],
  useFactory: (config: ConfigService) => ({
    secret: config.get('SECRET_KEY')
  })
})

确保在应用模块构造函数中调用配置服务:

 export class AppModule {
  constructor(private configService: ConfigService) {}
}