React18项目出现_RUNTIME_读取错误的调试方案咨询
Cannot read properties of undefined (reading '_RUNTIME_')的实用方法 从报错代码里的extensionAPIs.runtime来看,这个问题和浏览器扩展或扩展API的polyfill有关,以下是具体排查调试步骤:
定位压缩文件的真实来源
打开浏览器DevTools的Sources面板找到ZSVJPCOI.js,查看它的归属:是项目依赖的第三方库(比如webextension-polyfill),还是浏览器扩展注入的代码?开启DevTools的「启用JavaScript源映射」功能,尝试还原成未压缩的原始代码,能更清晰看到报错的具体模块。关联近期操作排查诱因
回忆项目近期的改动:有没有新增/更新浏览器扩展(比如React DevTools、其他开发工具类扩展)、升级过和浏览器API相关的依赖、添加了调用chrome.runtime/browser.runtime的代码?先禁用所有浏览器扩展,刷新页面看报错是否消失——如果消失,逐个开启扩展就能定位到触发问题的那个。断点调试报错上下文
在Sources面板给ZSVJPCOI.js的920行打断点,触发报错时查看extensionAPIs和extensionAPIs.runtime的取值:是extensionAPIs本身未定义,还是runtime属性缺失?再往上追溯调用wrappedSendMessageCallback的上游代码,看extensionAPIs的初始化逻辑哪里出了问题。针对性排查webextension-polyfill(若涉及)
如果确定报错来自webextension-polyfill包,检查项目中该包的版本:近期是否升级过?回退到之前的稳定版本试试能不能解决。另外检查项目中调用扩展API的代码,有没有在非浏览器扩展环境下(比如普通网页)调用了browser.runtime.sendMessage这类API,导致polyfill初始化失败。临时屏蔽无影响报错
要是确认报错完全不影响业务流程,且暂时找不到根源,可以在DevTools的Console面板设置过滤规则:勾选「隐藏网络错误」或者自定义过滤条件,把这个报错屏蔽掉,避免干扰日常开发。
内容的提问来源于stack exchange,提问作者Simon Nazarenko

