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

243
Visualizações
NodeJS: compartir una instancia de módulo de registro dentro de mi aplicación

Creo para mi proyecto un módulo de registro y en realidad estoy creando una nueva instancia en todos los módulos para permitirles iniciar sesión en cli con la sintaxis correcta, color conf, etc.

Por ejemplo (un ejemplo simplificado)

 // index.js const {Log,Ansi} = require("./class/log.js"); const Tool = require("./class/tool.js"); const argv = require("yargs").argv; let log = new Log({ levelIcon:true, powerlineRoot:{ name:"root", backgroundColor:Ansi.BLACK_BRIGHT, text: "myappName" } }); let tool = new Tool(argv.toolName,argv.envName) tool.run().then(() => { log.print("Tool is running","info"); }).catch((err) => { log.print(err,"critical"); });
 // tool.js const {Log,Ansi} = require("./log.js"); class Tool { let log = new Log({ levelIcon:true, powerlineRoot:{ name:"root", backgroundColor:Ansi.BLACK_BRIGHT, text: "myappName" } }); run(){ return new Promise((resolve, reject) => { resolve() } } } module.exports = Tool

Me pregunto si hay una manera de crear solo una instancia en mi index.js y compartirla con la instancia de módulos como Herramientas. No sé si es posible, pero creo que será menos consumo de memoria compartir una instancia de Log que crear varias.

Espero que mi pregunta sea lo suficientemente clara. No dude en pedirme más información si es necesario

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

0

Sí, puedes hacerlo absolutamente. Dado que la entrada es index.js , puede considerar que finalmente se ejecutará como si fuera un solo archivo, en un solo hilo. Puede crear un módulo más logger.js como:

 const {Log,Ansi} = require("./class/log.js"); const logger = new Log({ levelIcon:true, powerlineRoot:{ name:"root", backgroundColor:Ansi.BLACK_BRIGHT, text: "myappName" } }); module.exports = logger;

Ahora puede simplemente importar el registrador y usarlo como:

 const logger = require("./logger") logger.print("hello world!");
about 4 years ago · Juan Pablo Isaza Relatório

0

Como dice @jjsingh, uso una variable global para almacenar el objeto.

No estoy seguro de que sea la mejor manera, pero por el momento resuelve mi problema.

 global.log = new Log({ levelIcon:true, powerlineRoot:{ name:"root", color:{ background:Ansi.BLUE_SEA, foreground:Ansi.RED, }, text:global.conf.get("infos").name } });
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