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

122
Vistas
La secuencia de comandos de fondo en mi extensión de Chrome deja de responder una vez que necesito un módulo de JavaScript

Estoy trabajando en una extensión de Chrome que toma imágenes de un sitio web e intenta predecir los objetos en esas imágenes. Estoy usando el modelo MobileNet preentrenado de tensorflow.js para hacer predicciones.

Como parte de mi configuración inicial, pude pasar mensajes entre mi script de contenido y el script de fondo usando mensajes de puerto. Sin embargo, una vez que importo el modelo de MobileNet en mi script de fondo, el fondo deja de responder e incluso console.logs() no aparece en las herramientas de desarrollo.

Manifiesto.json

 ... "host_permissions": ["https://www.dawn.com/"], "permissions": ["storage", "tabs"], "options_page": "options.html", "background": { "service_worker": "background.js" }, "content_scripts": [ { "matches": ["https://www.dawn.com/"], "js": ["contentScript.js"] } ] ...

Fondo.js

 const mobilenet = require("@tensorflow-models/mobilenet"); async function genPrediction(img) { const model = await mobilenet.load(); const predictions = await model.classify(img); return predictions; } chrome.runtime.onConnect.addListener(function (port) { port.onMessage.addListener(function (msg) { console.log("msg: ", msg); if (msg.type === "get_model_prediction") { genPrediction(msg.img).then((response) => { port.postMessage({ response }); }); } }); });

contentScript.js

 var chromeRuntimePort = chrome.runtime.connect(); chromeRuntimePort.onDisconnect.addListener(() => { console.log("runtime is disconnected"); chromeRuntimePort = undefined; }); // when using the port, always check if valid/connected function postToPort(msg) { if (chromeRuntimePort) { chromeRuntimePort.postMessage(msg); } else { console.log("runtime is not defined"); } } let images = document.images; postToPort({msg: "get_ml_predictions", images: images});

El modelo de MobileNet tiene 254 KB en el disco, pero depende de la biblioteca tensorflow, que tiene 60 MB en el disco, y mi extensión empaquetada en modo de desarrollo es de 12,5 MB. ¿Podría ser que la biblioteca importada sea demasiado grande para requerirla en el script de fondo? ¿Existen prácticas recomendadas para solicitar módulos en secuencias de comandos en segundo plano que debería seguir? ¡Cualquier ayuda será muy apreciada!

Nota: estoy usando webpack para empaquetar mi extensión.

about 4 years ago · Juan Pablo Isaza
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