无法使用 MV3 从 Firefox 下的通用脚本导出到 background.js

was*_*eff 4 javascript import firefox-addon-webextensions chrome-extension-manifest-v3

我正在尝试重用 Service Worker (background.js) 和 content script 之间的某些功能

在带有 Manifest V3 (104.0b9 Developer Edition) 的 Firefox 中,我一直得到

未捕获的语法错误:导入声明只能出现在模块的顶层

...虽然它在 Chrome 下使用 MV3 (104.0.5112.79) 运行良好。

我尝试了https://javascript.info/import-export中找到的大多数变体,但没有成功。

这是我的示例代码。对于每个实验,我只import在 中保留一行background.js。但是错误消息总是相同的。


背景.js:

import {commonApartFunction} from './common_apart.js';
import * from './common.js';
import { commonFunction } from './common.js';
import * as commonObject from './common.js';
import defaultFunction from './default.js';

function commonCaller() {
  commonApartFunction();
  commonFunction();
  defaultFunction();
  commonObject.commonFunction();
}
Run Code Online (Sandbox Code Playgroud)

通用.js:

export function commonFunction() {
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

common_apart.js:

function commonApartFunction() {
    return 2;
}

export {commonApartFunction};
Run Code Online (Sandbox Code Playgroud)

默认.js:

export default function defaultFunction() {
    return 3;
}
Run Code Online (Sandbox Code Playgroud)

清单.json:

{
  "manifest_version": 3,
  "name": "Import-Export expriment",
  "version": "0.0.1",
  "description": "Import-Export expriment",
  "author": "Jane Doe",
  "content_scripts": [
    {
      "matches": [
        "https://*.example.com/*"
      ],
      "js": [
        "content.js"
      ],
      "run_at": "document_idle"
    }
  ],
  "background": {
    "type": "module",
    "scripts": [
      "background.js"
    ]
  },
  "browser_specific_settings": {
    "gecko": {
      "id": "jane@doe.com",
      "strict_min_version": "66.0"
    }
  },
  "web_accessible_resources": [
    {
      "resources": [
        "common.js", "common_apart.js", "default.js"
      ],
      "matches": [
        "https://*.example.com/*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

ero*_*man 5

有一些注意事项:

"background": {
  "service_worker": "background.js",
  "type": "module"
}
Run Code Online (Sandbox Code Playgroud)

你会得到一个错误,例如

临时附加组件安装期间出现错误。
错误详细信息
扩展无效
读取清单:处理背景时出错:值必须:包含所需的“page”属性、包含所需的“scripts”属性或不包含意外的“type”属性

  • 最新的 Nightly(发布时为 106.0a1)通过切换这 2 个来支持 MV3 Service Worker 后台about:config,仅用于测试目的,因为目前 API 支持非常有限。
    • extensions.manifestV3.enabled
    • extensions.backgroundServiceWorker.enabled

注:根据mixedpuppy提供的信息进行更新