反馈 — 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)
处理方向¶
- 归入 issue → 0022-extension-context-invalidated