Chrome扩展Manifest V3中Service Worker注册失败:无法读取extensionId
Chrome Manifest V3 扩展Service Worker加载失败问题排查
问题描述
开发Chrome Manifest V3扩展时遇到如下错误:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'extensionId')
访问扩展检查页面的Service Worker视图时触发该错误,且当前扩展的Service Worker完全无法工作(其他扩展的Service Worker可正常运行)。
上下文信息
background.js 代码
console.log("Background script loaded."); const { OpenAI } = require("openai"); const openai = new OpenAI({ apiKey: "my_api_key" }); async function generateResponse(emailContent, style) { try { const response = await openai.chat.completions.create({ model: "gpt-3.5-turbo", messages: [ { role: "system", content: `You are a helpful assistant. Respond in a ${style} tone.` }, { role: "user", content: emailContent }, ], }); return response.choices[0]?.message?.content || "No se pudo generar una respuesta."; } catch (error) { console.error("Error al contactar con OpenAI:", error); return "Hubo un error al contactar con OpenAI."; } } chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { console.log("Mensaje recibido en background.js:", message); if (message.type === "generateResponse") { console.log("Respuesta generada recibida:", message.response); generateResponse(message.emailContent, message.style) .then(response => { // Enviar la respuesta generada de vuelta a content.js chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { chrome.tabs.sendMessage(tabs[0].id, { type: "generateResponse", response: response }); }); }) .catch(err => { console.error(err); sendResponse("Hubo un error al generar la respuesta."); }); } });
manifest.json 配置
{ "manifest_version": 3, "name": "My Extension", "version": "1.0", "permissions": [ "activeTab", "scripting", "storage" ], "host_permissions": [ "https://mail.google.com/*", "https://api.openai.com/*" ], "action": { "default_popup": "popup.html" }, "background": { "service_worker": "background.js" }, "content_scripts": [ { "matches": ["https://mail.google.com/*"], "js": ["content.js"] } ] }
错误详情
Chrome扩展控制台日志显示:Service worker registration failed. Status code: 15
已尝试的解决方法
- 检查background.js的配置逻辑,未发现明显错误
- 将Chrome浏览器更新至最新版本
- 禁用其他可能干扰的扩展,问题仍存在
- 手动排查代码细节,未发现异常逻辑
预期结果
至少能看到background.js中的初始化日志console.log("Background script loaded.")(当前无法看到,但content.js的日志可正常显示),点击按钮时能正常触发相关日志和功能逻辑。
请问有人遇到过类似问题或知晓解决方法吗?恳请帮助!
内容的提问来源于stack exchange,提问作者Giuliana Barbieri
相关产品推荐
相关产品推荐

