nestjs的providers全局共享为什么不行?

作者站长头像
站长
· 阅读数 9

场景:nestjs modules 使用app.service 是否需要注册?我想实现的大致如下:nestjs的providers全局共享为什么不行?

以上不行!? 理论上来说我在app.module.ts中使用了providers应该是全局共享的呀?还是说我理解的有错误?

import { Module } from '@nestjs/common'
import { AppController } from './app.controller'
import { AppService } from './app.service'
import { MediaModule } from './modules/media/media.module'
import { FdsModule } from './modules/fds/fds.module'
import { NestLogsModule } from 'nest-logs'
import { ConfigModule } from '@nestjs/config'

@Module({
  imports: [
    MediaModule,
    FdsModule,
    NestLogsModule,

  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

预期:在其他的modules使用app的方法的时候可以不用注册、辛苦有相关的伙伴指点一下、感谢

回复
1个回答
avatar
test
2024-07-04

你可以看看这个例子:新建一个 GlobalModule 的全局模块:

import { Module, Global } from '@nestjs/common';
import { AppService } from './app.service';

@Global()
@Module({
  providers: [AppService],
  exports: [AppService],
})
export class GlobalModule {}

2.更新 AppModule 以引入 GlobalModule:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { MediaModule } from './modules/media/media.module';
import { FdsModule } from './modules/fds/fds.module';
import { NestLogsModule } from 'nest-logs';
import { ConfigModule } from '@nestjs/config';
import { GlobalModule } from './global.module';

@Module({
  imports: [
    MediaModule,
    FdsModule,
    NestLogsModule,
    ConfigModule,
    GlobalModule,
  ],
  controllers: [AppController],
})
export class AppModule {}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容