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

177
Visualizações
Migración de CommonJS 'module.exports = function()' a ESM

Estoy usando NodeJS y he estado escribiendo JavaScript durante algunos años y todavía estoy aprendiendo.

Para mis módulos CJS, escribo (lo que llamo) una función raíz que contiene todas (lo que llamo) mis subfunciones y luego return {subfunction1, subfunction2} en la función raíz para las funciones que quería exponer. Es cierto que aprendí este estilo de escritura de Jonathan Mills y estoy contento con él.

Tengo problemas para migrar esto correctamente de CommonJS a ESM y espero hacerlo sin usar Class . Sin embargo, si Class es el camino correcto con ESM, entonces me adaptaré.

Aquí hay un servicio CJS:

service.js

 function WebexService(webex) { async function processMessage(messageData) { try { const user = await webex.people.get(messageData.personId); //debug(user); sendMessage({ displayName: user.displayName, roomId: messageData.roomId }); } catch (error) { debug(error); throw error; } } function sendMessage(messageInfo) { webex.messages.create({ roomId: messageInfo.roomId, text: `Howdy! ${messageInfo.displayName}`, }); } return { processMessage } } module.exports = WebexService()

Para usar este servicio CJS, lo importaría como:

app.js

 const { processMessage } = require('../services/webexService'); function superCool() { const messageResponse = await processMessage(messageData); }

La única forma en que he podido hacer que esto funcione con ESM es como Class :

service.js

 import debugInit from 'debug'; import chalk from 'chalk'; const debug = debugInit('app:services:webex'); export default class WebexService { constructor(webex) { this.webex = webex; } async processMessage(messageData) { try { const user = await this.webex.people.get(messageData.personId); //debug(user); this.sendMessage({ displayName: user.displayName, roomId: messageData.roomId }); } catch (error) { debug(error); throw error; } } sendMessage(messageInfo) { this.webex.messages.create({ roomId: messageInfo.roomId, text: `Howdy! ${messageInfo.displayName}`, }); } }

app.js

 import WebexService from '../services/webex.js'; const WebexServiceInstance = new WebexService(webex); WebexServiceInstance.processMessage(event.data);

Espero que alguien pueda indicarme la dirección correcta. Estoy feliz de RTFM si alguien puede ayudarme a encontrar uno para leer.

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

0

service.js

 function WebexService(webex) { async function processMessage(messageData) { try { const user = await webex.people.get(messageData.personId); //debug(user); sendMessage({ displayName: user.displayName, roomId: messageData.roomId }); } catch (error) { debug(error); throw error; } } function sendMessage(messageInfo) { webex.messages.create({ roomId: messageInfo.roomId, text: `Howdy! ${messageInfo.displayName}`, }); } return { processMessage } } const service = WebexService() export default service

app.js

 import WebexService from '../services/webex.js'; // you can then do this const { processMessage } = WebexService; function superCool() { const messageResponse = await processMessage(messageData); } // or just use it directly function superCool() { const messageResponse = await WebexService.processMessage(messageData); }
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