如何将全局提供程序导入NestJS中的另一个全局提供程序?

时间:2019-11-28 17:45:09

标签: nestjs

我想将配置提供程序从文档导入另一个提供程序。

我正在使用与文档here中相同的配置结构。

所以config.module.ts看起来像这样:

import { Module, Global } from '@nestjs/common';
import { ConfigService } from './config.service';

@Global()
@Module({
  providers: [
    {
      provide: ConfigService,
      useValue: new ConfigService(
        `config/env/${process.env.NODE_ENV || 'development'}.env`,
      ),
    },
  ],
  exports: [ConfigService],
})
export class ConfigModule {}

另一个提供者应该看起来像这样正确吗?

token.module.ts

import { Module, Global } from '@nestjs/common';
import { TokenService} from './token.service';
import { ConfigService } from './config.service';

@Global()
@Module({
  import: [ConfigService]
  providers: [TokenService],
  exports: [TokenService],
})
export class TokenModule {}

虽然TokenService应该看起来像这样

token.service.ts

import { ConfigService } from '../../config/config.service';

export class TokenService {
  constructor(private readonly configService: ConfigService) {}

  test(): string {
    return this.configService.get('TestVal');
  }
}

但是当我在AppModule中导入TokenModule时,出现此错误The "path" argument must be one of type string, Buffer, or URL. Received type undefined

1 个答案:

答案 0 :(得分:1)

您忘记将TokenService标记为@Injectable()。您需要将需要提供给其他服务的参数告知NestJS。