Estoy en proceso de actualizar mi extensión de Chrome del manifiesto v2 a v3. Aquí está el viejo manifiesto:
Manifiesto V2:
{ "manifest_version": 2, "name": "Legacy Search Assistant", "version": "0.1.1", "content_scripts": [ { "matches": [ "https://*.legacysite.io/*","*://*/api*" ], "js": ["jquery-3.6.0.min.js","content.js"] } ], "options_page": "options.html", "background": { "scripts": ["jsencrypt.min.js", "jquery-3.6.0.min.js", "background.js"] }, "browser_action": { "default_icon": "icon.png", "default_popup": "popup.html", "default_title": "Legacy Search" }, "permissions": [ "storage" ] }Dado que jsencrypt.min.js ya estaba cargado en el manifiesto, pude llamar a sus funciones en background.js, pero ahora que he ido al manifiesto v3, tengo problemas para que el trabajador del servicio acceda a esta biblioteca.
Por ejemplo, cuando hago esta llamada en background.js:
importScripts("/scripts/jsencrypt.min.js");Lanza el siguiente error:
Error handling response: Error: Failed to execute 'importScripts' on 'WorkerGlobalScope': The script at 'chrome-extension://<extension ID>/scripts/jsencrypt.min.js' failed to load.Si hago clic en el enlace del error, me lleva directamente a la biblioteca que quiero cargar.
Ya probé todas las correcciones en esta respuesta . Por favor ayuda si puedes.
importScripts() es una forma antigua de cargar scripts en los trabajadores.
Ahora podemos usar módulos ES más modernos en su lugar.
A partir de Chrome 91, podemos usar módulos de JavaScript en trabajadores de servicios.
Simplemente establezca la propiedad de tipo en el módulo en el manifiesto.
{ "manifest_version": 3, "background": { "service_worker": "background.js", "type": "module" }Esto carga el trabajador de servicio como un módulo ES, lo que le permite usar la palabra clave de importación en el trabajador de servicio para importar otros módulos. Ex-
// background.js import * as module from './scripts/jsencrypt.min.js';Pero asegúrese de que el script que está importando, como ./scripts/jsencrypt.min.js en este caso, haya exportado el código requerido que desea usar.