Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

217
Visualizações
Módulo Globle sin importar no funciona nestjs

Estoy tratando de implementar un módulo global en nest.js

He creado un servicio como el siguiente.

 export interface ConfigData { DB_NAME: string; } @Injectable() export class ConfigManager { private static _instance?: ConfigManager; public static configData:ConfigData | null; private constructor() { console.log(ConfigManager) if (ConfigManager._instance) ConfigManager._instance = this; else{ ConfigManager._instance = new ConfigManager() ConfigManager.configData = <ConfigData|null><unknown>ConfigManager.fetchSecretData() } } private static async fetchSecretData():Promise<ConfigData|null>{ // some data from db } // static get instance() { // return ConfigManager._instance ?? (ConfigManager._instance = new ConfigManager()); // //return ConfigManager._instance ?? (ConfigManager._instance = ConfigManager.fetchSecretData()) //new ConfigManager()); // } }

configuración.módulo.ts

 @Global() @Module({ providers: [ConfigManager], exports: [ConfigManager], }) export class ConfigurationModule {}

y en app.module.ts agregó ConfigurationModule en las importaciones.

Además, al agregar un constructor privado en el servicio, no se puede agregar el archivo module.ts.

Espero poder configData en cualquier lugar sin importar el ConfigManager. pero no funciona...

ConfigManager no está disponible sin importar.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Solo marcó su módulo con el decorador @Global , pero NestJS necesita inicializar ese módulo de alguna manera y hacer que esté disponible globalmente.

Lo que esto significa es que debe agregar este módulo a su módulo de aplicación central y NestJS hará el resto por usted, así que algo como esto (o como se llame su módulo raíz):

 @Module({ imports: [ConfigurationModule], }) export class AppModule {}

De la documentación

El decorador @Global() hace que el módulo tenga un alcance global. Los módulos globales deben registrarse solo una vez, generalmente por el módulo raíz o central.

about 4 years ago · Juan Pablo Isaza Relatório

0

esto es 'por diseño' de es6/ts: no puede usar la clase sin importarla.

está mezclando los conceptos de di (ejemplificación/composición) con importación (definiendo qué clases están disponibles en el alcance del módulo)

about 4 years ago · Juan Pablo Isaza Relatório

0

Los módulos globales en nido solo significan que no tiene que incluir ese módulo en las importaciones: [] de cualquier otro módulo que requiera sus proveedores. Los proveedores en el módulo global aún se comportan como proveedores normales, es decir, debe inyectarlo donde lo necesite.

Entonces, en su caso, dado que ya agregó @Global() a ConfigManager e importó ConfigurationModule en app.module.ts , no necesitará agregar ConfigurationModule en las importaciones para ningún otro módulo que desee usar ConfigManager . Sin embargo, aún necesitaría inyectar el proveedor ConfigManager ; eso es lo que significa @Injectable() :).

Para hacer la inyección, necesita un constructor(private configManager: ConfigManager) {} en la clase que necesita usar ConfigManager , y dado que necesita acceso al tipo de clase, necesitará import { ConfigManager } from '../path/to/ConfigManager' también.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda