Skip to main content
從終端機讀寫擴充功能的 chrome.storage 區域。 storage 會與執行中的 dev 工作階段溝通,並把 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 診斷拒絕該呼叫的工作階段。
  • 除錯 了解更完整的除錯工作流程。