当前位置: 首页 > 知识库问答 >
问题:

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

狄兴业
2023-05-04

场景:nestjs modules 使用app.service 是否需要注册?
我想实现的大致如下:
image.png

以上不行!? 理论上来说我在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的方法的时候可以不用注册、辛苦有相关的伙伴指点一下、感谢

共有2个答案

顾高翰
2023-05-04

感谢1楼给出答案、我也在文档中找到了、还是没有仔细看文档。。。

image.png
相关链接

闻枫
2023-05-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 {}
 类似资料:
  • 问题内容: 我正在观看有关Java的演示,有一次讲师说: “可变性还可以,共享很好,共享可变性是魔鬼的工作。” 他指的是以下代码,他认为这是“极度坏习惯”: 然后,他着手编写应使用的代码,即: 我不明白为什么第一段代码是“不良习惯”。对我来说,他们都实现了相同的目标。 问题答案: 当执行并行处理时,该问题就起作用了。 在使用流时,这不必要地使用了 副作用, 但如果正确使用,并非所有副作用都不好,因

  • 我正在看一个关于Java的演讲,有一次,讲师说: “可变是可以的,共享是好事,共享可变是魔鬼的工作。” 他所指的就是以下代码,他认为这是一个“极其糟糕的习惯”: 然后,他继续编写应该使用的代码,即: 我不明白为什么第一段代码是“坏习惯”。对我来说,他们都达到了相同的目标。

  • 问题内容: 我一直看到警告,不要在JavaScript中使用全局变量,但是似乎人们说这的唯一原因是因为阻塞了全局名称空间。我可以想象通过将所有变量放入一个大对象中来轻松解决此问题。现在的问题是:除了方便起见,还有其他原因不使用全局变量吗?它们是否涉及任何性能或兼容性问题? 问题答案: 它们使全局名称空间混乱,并且查找速度比局部变量慢。 首先,拥有许多全局变量始终是一件坏事,因为很容易忘记您在某个地

  • 本文向大家介绍MySQL全局共享内存介绍,包括了MySQL全局共享内存介绍的使用技巧和注意事项,需要的朋友参考一下 前言 全局共享内存则主要是 MySQL Instance(mysqld进程)以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息,如存储查询缓存的 Query Cache,缓存连接线程的 Thread Cache,缓存表文件句柄信息的 Table Cache,缓存二进制日志的 Bi

  • 问题内容: 为什么全局变量是不好的?[closed] 问题答案: 这与Python无关。全局变量在任何编程语言中都是不好的。 但是,全局常量在概念上与全局变量并不相同。全局常数完全无害。只是在Python中没有强制性差异,只有约定是。 它们不好的原因是它们使函数具有隐藏的(非显而易见的,令人惊讶的,难以检测的)副作用,从而导致复杂性的增加,并有可能导致产生Spaghetti代码。 但是,即使在函数

  • 问题内容: 每个线程都有自己的堆栈,但是它们共享一个公共堆。 所有人都清楚堆栈是用于局部/方法变量,堆是用于实例/类变量。 在线程之间共享堆有什么好处。 有多个线程同时运行,因此共享内存可能导致诸如并发修改,互斥等开销的问题。堆中的线程共享哪些内容。 为什么会这样呢?为什么每个线程也不拥有自己的堆?谁能提供一个现实的例子,线程如何利用共享内存? 问题答案: 要将数据从一个线程传递到另一个线程时该怎