Estoy buscando una solución en todas partes y no puedo encontrar nada sobre este error. Estoy tratando de "actualizar" una extensión de Chrome para manifestar v3 y aparece este error:
Unchecked runtime.lastError: Exactly one of 'func' and 'files' must be specifiedAlguien tiene una idea de que puedo hacer para solucionar esto? Aquí está mi manifest.json:
{ "manifest_version": 3, "name": "Extension_Name", "description": "Extension_Desc", "version": "5.0", "icons": { "16": "/images/image16.png", "48": "/images/image48.png", "128": "/images/image128.png" }, "action": { "default_popup": "popup.html" }, "permissions": [ "storage", "activeTab", "scripting", "tabs" ], "host_permissions": [ "https://example.com/*" ] }Y aquí está mi popup.html, al que se hace referencia en el error (pero sin una línea específica, solo popup.html:0):
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="popup.css"> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://example.com"> <title>Extension Test</title> </head> <body> <h2>Ghost</h2> <form name ="form" id="login_form" action="#"> <input type="text" id="mdp" placeholder="Password"/> <input type ="button" name="submit" value="Login" id="login"/> </form> <button id="logout">Logout</button> <script src="popup.js"></script> </body> </html>Sé que unsafe-eval no es compatible con el manifiesto v3, pero me ocuparé de este error más adelante. Si elimino unsafe-eval, el otro error permanece, por lo que los dos no están vinculados. ¡Gracias de antemano!
Finalmente, el error se soluciona agregando "archivos" en la función executeScript(). Antes tenía:
chrome.scripting.executeScript( { target: {tabId: tab.id}, function: functionToExecute() })La solución encontrada es:
chrome.scripting.executeScript( { target: {tabId: tab.id}, files: ['popup.js'], function: functionToExecute() })¡Gracias de nuevo por la ayuda!