跳转至

反馈 — Extension context invalidated

原文 / 原始内容

附用户截图:错误日志面板显示

Error: Extension context invalidated.
上下文: main.html
堆栈追踪: chunks/data-DvrcM699.js:48 (匿名函数)

(代码片段是 React internals — var Gf=Symbol.for("react.transitional.element"))

上下文

  • 版本:v0.10.28
  • 触发场景(典型):
  • 用户在 chrome://extensions 点了「刷新」/ 重载扩展
  • 扩展更新(开发热重载 / 自动更新)
  • 扩展被 disable/re-enable
  • 而老的 main.html / popup / settings tab 还开着,里面的 React 渲染时仍调 chrome.runtime.sendMessage / browser.storage.* / 等 API
  • 表现:API 抛 Extension context invalidated,React 渲染中断,错误日志堆积

我的初步理解

经典 Chrome MV3 痛点。根因:MV3 service worker 重启时,原页面的 chrome.runtime ID 变了,所有持有老 context 的代码调 API 都失败。

业内常见修法: 1. 全局 window.onerror + unhandledrejection 监听 2. 检测 error message 含 "Extension context invalidated" 3. 显示「扩展已更新,正在刷新」覆盖层 4. 自动 location.reload()(拿到新 context)

处理方向