Skip to main content
从终端读写扩展的 chrome.storage 区域。 storage 与一个正在运行的开发会话通信,并把 storage 调用放到扩展内部执行,所以你看到的正是你的代码看到的内容。不需要 DevTools,也不需要临时的 console.log 会话必须以解锁控制通道的方式运行:用 extension dev --allow-control 启动它。被拒绝时,错误信息会点名缺少的那个 flag。

什么时候使用 storage

  • 你想查看扩展持久化了什么,又不想为此专门搭一个调试界面。
  • 测试或 agent 需要在跑通某个流程之前先给 storage 播下初始状态。
  • 你想在一个实时会话中翻转某个存储的功能开关,并观察效果。

用法

先读取整个 local 区域,再读取单个键,然后写入一个值:

参数与 flag

值是怎么解析的

--value 会按 JSON 解析,因此 '{"theme": "dark"}''42''true' 都是带类型送达的。不是合法 JSON 的输入会退回为原始字符串,所以 --value hello 会存下字符串 "hello",不需要额外加引号。 set 同时需要 --key--value。少了任何一个,都会在建立任何连接之前以 E_ARGS 失败。除 getset 以外的动作也以同样的方式失败。

失败模式

  • 该浏览器没有会话:E_SESSION_NOT_FOUND,并给出应当运行的完整 extension dev --allow-control 命令。
  • 会话在运行时没有带 --allow-control:连接被拒绝,错误信息会点名这个 flag。
  • storage 调用在扩展内部抛出了异常(例如向只读的 managed 区域写入):E_STORAGE
  • 调用超出了 --timeoutE_TIMEOUT
成功时退出码为 0,任何失败都是 1。机器消费方应当读取 --output json 输出的信封(参见 结果信封)。

下一步

  • eval 在同一个会话中执行任意表达式。
  • 播下状态之后,用 reload 重启 background worker。
  • doctor 诊断拒绝该调用的会话。
  • 调试 中了解更完整的调试工作流。