Hay muchas cuestiones abiertas sobre el tema, pero no pude encontrar una explicación en mi caso. Aquí hay un caso de prueba mínimo:
Aquí está mi manifiesto.json
{ "manifest_version": 3, "name": "Test", "version": "1.0", "description": "Test extension", "icons": { "48": "dark.png" }, "background": { "service_worker": "button.js" }, "permissions": [ "activeTab" ], "action": { "default_icon": "dark.png", "default_title": "DarkTheme" }, "content_scripts": [ { "matches": [ "<all_urls>" ], "js": [ "dark.js" ] } ] }botón.js
chrome.action.onClicked.addListener(tab => { console.log('clicked') chrome.tabs.sendMessage(tab.id, { value: false }) });oscuro.js
chrome.runtime.onMessage.addListener(request => { console.log('received', request) })Entonces, básicamente, mi oyente está configurado desde el principio, y solo cuando presiono el botón envío un mensaje. ¿Cómo es que puedo recibir este error cuando presiono el botón?
Uncaught (in promise) Error: Could not establish connection. Receiving end does not exist.Probado en Chromium versión 100.0.4896.75 (compilación oficial) snap (64 bits)