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

Chrome扩展报错:无法读取undefined的addListener属性如何解决

报错原因

触发Uncaught TypeError: Cannot read properties of undefined (reading 'addListener')的核心原因是代码运行上下文错误,和tabs权限声明无关:

  • chrome.tabs.onUpdated 是仅可在扩展后台上下文(Manifest V3 的 Service Worker、Manifest V2 的 background 脚本)调用的API,如果你把这段代码写在内容脚本(content script)、页面注入脚本、popup 页脚本里,chrome.tabs 对象本身为 undefined,访问其下的 onUpdated.addListener 就会抛出该错误。
  • 你贴出的代码末尾多了两层无效的 }); 闭合,即使放对运行位置也会触发语法错误,需要同步修正。
  • 额外注意:你原代码对onUpdated回调的参数使用有误,该回调第二个参数是页面变更状态对象changeInfo,第三个参数才是完整的tab对象,原写法会导致url判断逻辑失效。
修复方法
  1. 检查清单文件manifest.json,确认正确配置了后台脚本路径,Manifest V3 配置参考:
{
  "manifest_version": 3,
  "name": "扩展名称",
  "version": "1.0",
  "permissions": ["tabs"],
  "background": {
    "service_worker": "background.js"
  }
}

Manifest V2 旧版配置参考:

{
  "manifest_version": 2,
  "name": "扩展名称",
  "version": "1.0",
  "permissions": ["tabs"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  }
}
  1. 将监听逻辑移到上述配置对应的background.js文件中,修正多余括号和参数错误,最终代码如下:
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
  if (changeInfo.status === 'complete' && tab.url?.includes("youtube.com/watch")) {
    console.log("Hello")
  }
});
  1. 打开chrome扩展管理页chrome://extensions/,点击对应扩展的刷新按钮重新加载,测试功能即可。该逻辑的console日志会输出在扩展后台Service Worker的控制台中,不会显示在普通网页的开发者工具控制台里。

内容的提问来源于stack exchange,提问作者叶彬铭

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:33:24