【问题标题】:nestjs process.env.variable is undefined in my auth.module.tsnestjs process.env.variable 在我的 auth.module.ts 中未定义
【发布时间】:2022-02-18 10:54:16
【问题描述】:

我正在尝试在 nestjs 中测试 jwt 身份验证。

当我调用 jwtService.sign(); 它显示错误 secretOrPrivateKey must have a value - {} 秘密未定义。

但在 AuthController 中,porcess.env.JWT_SECRET_KEY 是有效的。

我不知道为什么它不起作用。

我该如何解决?

auth.module.ts

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      load: [AppConfig, MySqlConfig, OracleConfig],
      envFilePath: `${process.env.NODE_ENV}` == '' ? '.env.dev' : `.env.${process.env.NODE_ENV}`,
      validationSchema: Joi.object({
        NODE_ENV: Joi.string()
          .valid('dev', 'stg', 'prd'),
      }),
    }),
    AuthModule,
  ],
  controllers: [AppController],
  providers: [AppService, Logger],
})
export class AppModule {}

app.module.ts

@Module({
  imports: [
    PassportModule,
    JwtModule.register({
       secret: process.env.JWT_SECRET_KEY,
      signOptions: { expiresIn: '1d' },
    }),
  ],
  controllers: [AuthController],
  providers: [AuthService, JwtStrategy, LocalStrategy],
  exports: [AuthService],
})
export class AuthModule {}

main.ts

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    bufferLogs: true,
  });
  app.enableShutdownHooks();
  app.useLogger(app.get(MyLogger));

  const configService = app.get(ConfigService);
  const logger = app.get(MyLogger);
  const config = new DocumentBuilder()
    .setTitle('nestjs-tst-boilerplate')
    .setDescription('The nestjs-tst-boilerplate API description')
    .setVersion('0.0.1')
    .addTag('tag')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api', app, document);

  await app.listen(configService.get<number>('app.port'));
  logger.log(`Application running on [${configService.get<string>('app.env')}] enviroment. ${await app.getUrl()}`);
}
bootstrap();

【问题讨论】:

    标签: nestjs


    【解决方案1】:

    在读取process.env.JWT_SECRET_KEY 时,.env 可能还没有被解析。因此,如果您使用像@nestjs/config 这样的模块,请不要依赖process.env.。请改用JwtModule.register 的异步版本并注入ConfigService。见:https://github.com/nestjs/jwt/blob/master/README.md#async-options

    【讨论】:

      猜你喜欢
      • 2021-07-10
      • 1970-01-01
      • 2022-01-17
      • 2022-07-25
      • 2021-11-23
      • 2021-10-17
      • 2020-09-06
      • 1970-01-01
      • 2021-03-09
      相关资源
      最近更新 更多