You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Firefox扩展时browser.storage.session未定义,求排查方向

问题分析与解决方案

出现browser.storage.session is undefined错误的核心原因是你的扩展使用了Manifest V2,但storage.session是Manifest V3专属的API,Firefox在Manifest V2环境下不会暴露这个接口。

具体原因拆解

  • Manifest版本限制:storage.session是Manifest V3新增的会话存储API,Firefox仅在Manifest V3扩展中支持该接口,Manifest V2完全不兼容。你的配置中使用background.scripts是Manifest V2的写法,说明当前扩展是V2版本。
  • Firefox版本要求:即使升级到Manifest V3,也需要Firefox 102及以上版本才能支持storage.session,旧版本会同样出现未定义错误。

修复步骤

1. 升级Manifest到V3

修改manifest.json的核心配置:

  • 将manifest_version设置为3
  • 把background.scripts替换为background.service_worker(Manifest V3使用Service Worker作为后台脚本)

修改后的manifest.json关键部分示例:

{
  "manifest_version": 3,
  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "webNavigation",
    "storage",
    "<all_urls>",
    "notifications",
    "tabs"
  ],
  "background": {
    "service_worker": "content_scripts/test_storage.js"
  }
}

2. 验证Firefox版本

确保你的Firefox浏览器版本≥102,低于该版本的Firefox对Manifest V3的支持不全,无法使用storage.session。

3. 代码兼容性检查

Manifest V3的Service Worker与V2的后台脚本存在一些差异(例如无法直接访问DOM),但你的存储代码browser.storage.local.set()和browser.storage.session.set()无需修改,可直接在Service Worker中运行。

补充说明

storage权限已经包含了对storage.session的访问权限,无需额外添加权限配置。只要完成上述两步,storage.session就能正常工作。

内容的提问来源于stack exchange,提问作者Shelen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:35:22