Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

292
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda