Skip to main content
按需重新加载正在运行的扩展或标签页。 dev 会话在文件变化时本来就会自动重载。reload 面向的是自动重载看不到的场景:你手工改动的状态、卡死的 service worker,或者需要在两次运行之间拿到干净上下文的测试。 会话必须在控制通道解锁的状态下运行:用 extension dev --allow-control 启动它。被拒绝时,报错会指出缺少的那个 flag。

何时使用 reload

  • 后台 worker 里存着有问题的内存状态,你想干净地重启一次。
  • 某个脚本写入了 storage 或触发了一段流程,之后需要一个全新的上下文。
  • 你改了文件监视器视野之外的东西,想强制重新读取。

用法

参数与 flag

每种 context 分别重载什么

  • background 会重启扩展本身,从而重启 service worker 并重新读取 manifest。
  • content 会重载承载目标内容脚本的标签页,让脚本重新注入。
  • page 把目标标签页当作普通页面重载一次。
当活动标签页不是你想要的那个时,用 inspect --list-tabs 找到数字形式的标签页 id。

失败模式

  • 该浏览器没有对应会话:E_SESSION_NOT_FOUND,并附上要运行的完整 extension dev --allow-control 命令。
  • 会话运行时没有带 --allow-control:连接会被拒绝,报错会指出这个 flag。
  • --tab 指定的 id 已经不存在:E_TARGET_NOT_FOUND
  • 调用的耗时超过了 --timeoutE_TIMEOUT
成功时退出码是 0,任何失败都是 1。机器消费方应当读取 --output json 输出的信封(参见 结果信封)。

下一步

  • 重载与 HMR 了解自动重载已经覆盖了哪些情况。
  • logsinspect 确认重载后的上下文是干净的。
  • doctor 诊断拒绝了该调用的会话。
  • 调试 中了解更完整的调试流程。