Entonces, estoy tratando de crear una extensión de Chrome que use la biblioteca Fuse.js a través de un trabajador web ( https://cdn.jsdelivr.net/npm/fuse.js@6.6.2 , el trabajador web se carga a través de un .js archivo en el código de la extensión). Para hacer esto, estoy usando la función importScripts , por ejemplo, importScripts("https://cdn.jsdelivr.net/npm/fuse.js@6.6.2")
Inicialmente esto arrojó el error:
Refused to load the script 'https://cdn.jsdelivr.net/npm/fuse.js@6.6.2' because it violates the following Content Security Policy directive: "script-src 'self' 'wasm-unsafe-eval'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.Para resolver esto, probé varias variaciones de los cambios de CSP de manifest.json, pero parece que no puedo hacer que funcione. Aquí está mi intento más reciente (que se vuelve completamente exagerado al agregar todo lo que se me ocurre)
"content_security_policy": { "extension_pages": "script-src 'self'; object-src 'self'; script-src-elem 'self' 'unsafe-inline' https://cdn.jsdelivr.net/npm/fuse.js@6.6.2 https://cdn.jsdelivr.net/npm/fuse.js@6.6.2/; default-src 'self' 'unsafe-inline' https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap https://cdn.jsdelivr.net/npm/fuse.js@6.6.2 https://cdn.jsdelivr.net/npm/fuse.js@6.6.2/;", "worker-src": "unsafe-inline https://cdn.jsdelivr.net/npm/fuse.js@6.6.2;" }Si bien es bastante fácil cambiar para poder cargar el contenido de CDN dentro de la propia extensión, cargarlo desde el trabajador web parece ser diferente. ¡Quizás este puede ser un enfoque no compatible, y en ese caso agradecería cualquier recomendación de consejo!
Actualmente, otra idea mía sería cargar la biblioteca en un script de contenido, luego hacer que genere el trabajador web, luego pasar el resultado de eso a la extensión, sin embargo, esto parece un enfoque menos elegante.
¡Esta no es mi área de especialización, por lo que agradecería cualquier ayuda! Gracias.
Así que terminé resolviendo esto simplemente guardando el archivo minimizado del CDN localmente y luego importándolo en lugar de buscarlo desde el CDN cada vez. Esta es probablemente la mejor solución, pero no tan ideal para el prototipo rápido en el que estaba trabajando.