如何在 VSCode 中运行并调试 Chrome 插件后台脚本

酷婷同学_5955

酷婷同学_5955

2026-06-21

897人浏览

原创

必须在manifest.json中声明background.service_worker并设type为module,vscode断点需打在事件监听器内,chrome须以--remote-debugging-port启动,再通过chrome://extensions点击“service worker”唤醒并attach调试。

如何在 vscode 中运行并调试 chrome 插件后台脚本

后台脚本无法断点?先确认 manifest.json 的 type 配置

Chrome 插件的后台脚本(background script)在 Manifest V3 中必须声明为 service_worker 类型,否则 VSCode 无法附加调试器。Manifest V2 的 background.scripts 或 background.page 已被弃用,强行使用会导致 DevTools 不显示 background 页面,debugger 语句也无效。

检查你的 manifest.json 是否包含:

{
  "manifest_version": 3,
  "background": {
    "service_worker": "background.js",
    "type": "module"  // 可选,但若用 import/export 必须加
  }
}
  • service_worker 字段值必须是相对路径,且文件需真实存在;VSCode 调试器只识别 SW 入口,不支持 background.html
  • 若 background.js 是 ES 模块(含 import),务必加 "type": "module",否则 Chrome 加载失败,VSCode 连接时会报 Failed to load resource
  • 不要在 background 下同时写 scripts 和 service_worker,V3 会忽略前者

launch.json 怎么配?关键字段不能漏

VSCode 的 .vscode/launch.json 必须启用 chrome 调试类型,并指定 url 为 chrome-extension:// 协议地址 —— 这是唯一能触发后台脚本加载并允许断点的方式。

示例配置(替换 YOUR_EXTENSION_ID 为实际 ID):

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "chrome",
      "request": "attach",
      "name": "Attach to Background",
      "port": 9222,
      "webRoot": "${workspaceFolder}",
      "url": "chrome-extension://YOUR_EXTENSION_ID/background.js",
      "sourceMapPathOverrides": {
        "webpack:///./src/*": "${webRoot}/src/*"
      }
    }
  ]
}
  • port 必须与 Chrome 启动时的远程调试端口一致(启动命令加 --remote-debugging-port=9222)
  • url 中的 extension ID 不能手敲:打开 chrome://extensions → 开启「开发者模式」→ 找到你的插件 → 点击「详情」→ 复制 ID(一串小写字母和数字)
  • sourceMapPathOverrides 仅当使用构建工具(如 webpack、vite)时需要;纯 JS 文件可省略
  • 别用 launch 请求类型:后台脚本没有 HTML 容器,launch 会尝试打开新窗口,失败且无法 attach

Chrome 启动命令必须带 --remote-debugging-port

VSCode 调试器通过 CDP(Chrome DevTools Protocol)连接 Chrome 实例,没开调试端口就等于没开门。直接双击启动的 Chrome 默认关闭该端口,必须从终端显式启动。

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载

macOS/Linux 示例:

open -n -a "Google Chrome" --args --remote-debugging-port=9222 --load-extension=./dist

Windows 示例(PowerShell):

Start-Process "chrome.exe" -ArgumentList "--remote-debugging-port=9222","--load-extension=C:\path\to\dist"
  • --load-extension 参数值必须是扩展根目录(含 manifest.json),不是打包后的 ZIP
  • 如果已有一个 Chrome 实例在运行,新实例会拒绝启动调试端口 —— 关掉所有 Chrome 进程再试
  • Windows 上若提示找不到 chrome.exe,请用完整路径,例如 "C:\Program Files\Google\Chrome\Application\chrome.exe"
  • 别用 --disable-web-security 或其他无关参数干扰调试链路

断点不命中?检查脚本加载时机和 DevTools 标签

后台脚本在 service worker 生命周期中是懒加载的:只有事件(如 chrome.runtime.onInstalled)触发时才执行。单纯启动 Chrome 并不意味着 background.js 已运行,VSCode 断点自然不会生效。

  • 首次加载插件后,手动刷新一次 chrome://extensions 页面,或触发一个事件(比如点击插件图标、发一条 chrome.runtime.sendMessage)来激活 service worker
  • 在 Chrome DevTools 中,切换到 Application → Service Workers 标签,确认你的 worker 显示为「Running」状态;若为「Waiting」或「Redundant」,说明未激活
  • VSCode 断点只对已加载并执行过的代码有效 —— 在 background.js 顶部加 console.log('loaded'),看是否输出,判断脚本是否真正跑起来了
  • 如果用了 chrome.runtime.onMessage 等异步监听,断点要打在回调函数内,而非顶层代码

最常被忽略的是:你以为插件已加载,其实只是被 Chrome 缓存了旧版本。每次改完 manifest.json 或 background.js 后,务必在 chrome://extensions 点「重新加载」,而不是仅刷新页面。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vscode

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2746

5

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.06

5379

7

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

2026.03.24

3827

22

vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

2023.06.30

1395

18

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.21

2972

3

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

2009

12

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1727

8

vscode可以写什么语言
vscode可以写什么语言

vscode是一款强大的代码编辑器,支持多种编程语言的开发。通过安装扩展,可以为 JavaScript/TypeScript、Python、Java、C#、PHP、Go、Ruby、Rust、HTML/CSS 等语言提供智能代码补全、调试和格式化等功能。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

2607

12

vscode中文设置方法
vscode中文设置方法

方法一:在设置页面中,搜索“locale”,并选择“zh-cn”。方法二:按“Ctrl Shift P”快捷键,输入“Configure Display Language”,将语言修改为“zh-cn”。如果上述方法无效,可考虑安装中文插件。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1838

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程