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

291
Visualizações
Error no capturado (en promesa): un oyente indicó una respuesta asíncrona al devolver verdadero, pero el canal de mensajes se cerró antes de una respuesta

Estoy encontrando el error 'No detectado (en promesa): un oyente indicó una respuesta asíncrona al devolver verdadero, pero el canal de mensajes se cerró antes de que se recibiera una respuesta' error en background.js. Mi extensión de Chrome funciona, pero las herramientas de desarrollo muestran muchos de estos errores en background.js

Recientemente migré mi extensión de Chrome de Manifest V2 a Manifest V3 y desde entonces encuentro el error.

Este es el lugar de donde parece surgir el error:

 const browser = chrome || browser; // Listen for messages from content script browser.runtime.onMessage.addListener( function (request, sender, sendResponse) { var frameId = sender.frameId || 0; if (request.type == "connect") { connect(sender.tab, frameId); sendResponse({ success: true }); } else if (request.type == "disconnect") { disconnect(sender.tab, frameId); sendResponse({ success: true }); } else if (request.type == "send") { sendNativeMessage(request.data, sender.tab); document.addEventListener('nativeMessage', function handleNativeMessage(e) { sendResponse(e.detail); document.removeEventListener(e.type, handleNativeMessage); }, false); sendResponse({}); return true; } });

La respuesta de envío se procesa en ContentScript:

 const browser = chrome || browser; self.addEventListener("message", function(event){ var request = event.data; if(request != null && request.type == "SendMessage") { ProcessNativeMessage(request.data); } }); function ProcessNativeMessage(nativeMessageData) { var request = new Object(); request.data = nativeMessageData; browser.runtime.sendMessage(request,handleExtensionResponse); } function handleExtensionResponse(value) { //alert(value); };

Jugué devolviendo verdadero, devolviendo falso, devolviendo indefinido, enviando una respuesta vacía e incluso deshabilitando las otras extensiones, pero ninguno de estos cambios funcionó.

Incluso intenté cambiar el código con async/await como se sugiere aquí , pero no hace ninguna diferencia.

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

0

¿Cambia algo si reescribes el código así?
De todos modos no puedo reproducir una extensión con mensajería nativa, lo siento.
PD Antes de que cualquier científico decida rechazarme mal, quiero asegurarme de que si la solución no funciona, estoy dispuesto a cancelar la respuesta.

 const browser = chrome || browser; var globSendResp, globReqTypeSend; //(*) // Listen for messages from content script browser.runtime.onMessage.addListener(function(request, sender, sendResponse) { var frameId = sender.frameId || 0; globReqTypeSend = false; //(*) if (request.type == "connect") { connect(sender.tab, frameId); sendResponse({ success: true }); } else if (request.type == "disconnect") { disconnect(sender.tab, frameId); sendResponse({ success: true }); } else if (request.type == "send") { globReqTypeSend = true; //(*) globSendResp = sendResponse; //(*) sendNativeMessage(request.data, sender.tab); //sendResponse({}); //(*) return true; } }); document.addEventListener('nativeMessage', function handleNativeMessage(e) { if (globReqTypeSend) globSendResp(e.detail) }, false);
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