将扩展迁移到 Manifest v3 时出错

Igo*_*zum 5 migrate manifest google-chrome-extension webpack service-worker

尝试将 Chrome 扩展从清单 v2 迁移到 v3,但遇到一些错误。弹出脚本似乎正在工作(当我单击扩展图标时会弹出主页),但似乎根本看不到后台脚本。

将扩展文件夹上传到浏览器时,出现以下 2 个错误:

  • 警告:Service Worker 注册失败 在此输入图像描述
  • 未捕获的引用错误:窗口未定义 在此输入图像描述

似乎第二个错误是第一个错误的原因,但我不确定它是window从哪里得到的。我删除了代码中可能引用的所有内容window,但仍然收到该错误。

我可能需要更改一些 webpack 设置,但我不确定到底是什么。所以,伙计们,如果有人遇到类似的问题或只是尝试迁移扩展,请让我知道您是否有任何想法。

这是我的清单文件:

{
  "manifest_version": 3,
  "name": "__MSG_extName__",
  "description": "__MSG_extDescription__",
  "default_locale": "en",
  "permissions": [
    "tabs",
    "storage",
    "cookies"
  ],
  "host_permissions": [
    "<all_urls>"
  ],
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self'"
  },
  "icons": {
    "16": "icons/16.png",
    "48": "icons/48.png",
    "128": "icons/128.png"
  },
  "background": {
    "service_worker": "js/background.js"
  },
  "action": {
    "default_popup": "popup.html",
    "default_title": "__MSG_extName__"
  },
  "web_accessible_resources": [
    {
      "resources": [
        "icons/*.png",
        "fonts/*",
        "css/*"
      ],
      "matches": [
        "<all_urls>"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我使用 vue-web-extension 插件来创建扩展。

如果需要,我们很乐意提供任何其他详细信息。

小智 0

您必须将 background.js 文件与 Service Worker 文件放在一起,您的错误就会得到解决。将 Service Worker 文件和 background.js 文件放在同一文件夹中。而且 Service Worker 没有窗口,因此您需要删除所有使用它的代码。