E_* 錯誤碼。錯誤碼只會新增,絕不會被改名或移除。錯誤碼旁邊的訊息屬於自由文案,任何版本都可能更動。
這張表隨 extension-develop/contract/codes.json 一起發布,參見 結果信封。
用法
| 錯誤碼 | 意義 |
|---|---|
E_ARGS | 缺少必要引數,或呼叫方式格式錯誤。 |
E_INVALID_OPTION | 某個旗標或引數的值不在允許的集合內。 |
E_FLAG_VALUE_INVALID | 某個旗標的值未通過驗證。 |
E_FLAG_NOT_SUPPORTED_HERE | 該旗標存在,但不適用於這個指令或這個目標。 |
E_REMOVED_FLAG | 該旗標已從 CLI 移除。 |
E_UNKNOWN_COMMAND | 沒有子指令符合這個名稱。 |
E_NODE_VERSION | 執行中的 Node 版本低於支援的最低版本。 |
E_COMMAND_UNSUPPORTED_FOR_TARGET | 該指令不支援所要求的瀏覽器目標。 |
E_UNSUPPORTED_BROWSER | 所要求的廠商不在支援的瀏覽器清單內。 |
E_BROWSER_NOT_INSTALLABLE | 該瀏覽器隨作業系統提供,CLI 無法安裝它。 |
E_PARENT_GONE | --parent-pid 指定的宿主處理程序已死亡,開發伺服器因而自行結束。 |
E_REMOTE_URL_UNSUPPORTED | 該操作不接受遠端 URL。 |
專案
| 錯誤碼 | 意義 |
|---|---|
E_PROJECT_NOT_FOUND | 解析出的專案資料夾不存在。 |
E_CONFIG_LOAD | extension.config.js 在載入時拋出例外。 |
E_MANAGED_DEP_CONFLICT | 專案宣告了一個由工具鏈託管的套件。 |
E_DEPENDENCY_INSTALL | 安裝專案相依套件失敗。 |
E_TYPES_EMIT | 寫出 extension-env.d.ts 失敗。 |
E_TSCONFIG_MISSING | 存在 TypeScript 原始碼,但 package.json 旁沒有 tsconfig.json。 |
E_OPTIONAL_DEP_UNRESOLVED | 某個選用相依契約無法解析。 |
E_OPTIONAL_DEP_LOAD | 某個選用相依已解析,但載入失敗。 |
E_OPTIONAL_DEP_UNKNOWN | 未知的選用相依契約 id。 |
E_COMPANION_EXTENSION_PATH | 某個搭配擴充功能路徑逸出了 extensions/,或未產出任何未封裝內容。 |
E_MANIFEST_IN_PUBLIC | manifest.json 被放在 public/ 底下。 |
E_RUNTIME_NOT_FOUND | extension-develop 執行階段遺失或未編譯。 |
Manifest
| 錯誤碼 | 意義 |
|---|---|
E_MANIFEST_NOT_FOUND | 解析出的根目錄下沒有 manifest.json。 |
E_MANIFEST_INVALID | manifest 不是可解析的 JSON,或不是 WebExtension manifest。 |
E_MANIFEST_SHAPE | 某個 manifest 欄位的結構不正確。 |
E_MANIFEST_PAGE_MISSING | manifest 參照的某個 HTML 頁面不存在。 |
E_MANIFEST_VERSION_UNSUPPORTED | 這個目標不支援該 manifest_version。 |
E_MANIFEST_LOAD_BLOCKERS | manifest 中含有瀏覽器在載入時會拒絕的欄位。 |
E_MANIFEST_PERMISSION_MISSING | manifest 中缺少某個必要的權限。 |
E_MANIFEST_MSG_KEY_MISSING | 預設語系中缺少某個 __MSG_x__ 鍵。 |
E_MANIFEST_EMIT | manifest 的產出或寫入失敗。 |
E_RESTART_REQUIRED | 某個進入點欄位變更,開發伺服器必須重新啟動。 |
編譯
| 錯誤碼 | 意義 |
|---|---|
E_FIRST_COMPILE | 工作階段的第一次編譯失敗,因此什麼都沒有載入。 |
E_COMPILE | 編譯結束時帶有錯誤。 |
E_COMPILE_FATAL | 編譯器本身失敗,或回傳了無法使用的統計資料。 |
E_MODULE_NOT_FOUND | 某個模組識別字無法解析。 |
E_ENTRY_NOT_FOUND | 某個 manifest、HTML 或 JSON 進入點指向不存在的檔案。 |
E_ASSET_MISSING | 缺少某個圖示、靜態資源或 JSON 相依。 |
E_SCRIPT_DEP_MISSING | 某個執行階段指令稿相依無法被追蹤到。 |
E_RESERVED_FOLDER | 違反了保留的 scripts/ 資料夾結構。 |
E_CSS_PARSE | 某個樣式表解析失敗。 |
E_CSS_PREPROCESSOR_MISSING | 要求了某個 CSS 前處理器,但無法解析到它。 |
E_CSS_DEAD_REF | CSS 中的某個 url() 指向不存在的內容。 |
E_INTEGRATION_INSTALL | 某個框架整合安裝失敗。 |
E_POLYFILL_NOT_FOUND | 要求了 webextension-polyfill,但它並不存在。 |
E_LOCALES_LAYOUT | _locales 的結構或 messages.json 不合法。 |
E_WAR_INVALID | web_accessible_resources 的結構或比對樣式遭到拒絕。 |
E_MATCH_PATTERN_INVALID | 瀏覽器拒絕了某個 content script 的比對樣式。 |
E_BACKGROUND_REQUIRED | 重新載入執行階段需要一個 background chunk,但它並不存在。 |
E_CONTENT_SCRIPT_SYNTAX | 某個 content script 解析失敗。 |
E_NO_ENTRYPOINTS | 這次編譯產出了零個進入點。 |
E_REMOTE_RESOURCE_BLOCKED | 某個遠端指令稿或樣式表被擴充功能 CSP 封鎖。 |
E_PERF_BUDGET | 某個資源超出了它的大小預算。 |
E_ZIP_SKIPPED | 打包因某個已說明的原因被略過。 |
E_ENV_NO_MATCH | 沒有任何 .env 檔案符合目前模式。 |
遠端專案與網路
| 錯誤碼 | 意義 |
|---|---|
E_REMOTE_FETCH_TIMEOUT | 某次遠端擷取超過了它的逾時時間。 |
E_REMOTE_DOWNLOAD | 遠端擴充功能的下載或解壓縮失敗。 |
E_REMOTE_ZIP_INVALID | 該遠端 URL 回傳的並不是 zip。 |
E_LOCAL_ZIP_NOT_FOUND | 被參照的本機 zip 遺失,或根本不是 zip。 |
E_PROJECT_DOWNLOAD_EMPTY | 下載成功,但解壓出的資料夾並不存在。 |
E_NETWORK | 某個網路請求失敗或逾時。 |
瀏覽器執行檔與啟動
| 錯誤碼 | 意義 |
|---|---|
E_BROWSER_NOT_FOUND | 所要求的廠商沒有已安裝的執行檔。 |
E_BROWSER_BINARY_REQUIRED | -based 目標需要明確的執行檔路徑。 |
E_BROWSER_BINARY_INVALID | 給定的執行檔路徑不存在,或無法執行。 |
E_BROWSER_LAUNCH | 瀏覽器處理程序無法產生,或在啟動時就死掉了。 |
E_BROWSER_EXITED | 已啟動的瀏覽器結束了,而伺服器仍在執行。 |
E_BROWSER_START_TIMEOUT | 瀏覽器始終沒有送出啟動訊號。 |
E_PROFILE_LOCKED | 該設定檔目錄被另一個瀏覽器處理程序占用。 |
E_LAUNCH_SKIPPED_COMPILE_ERRORS | 因為編譯失敗,所以沒有啟動瀏覽器。 |
E_INSTANCE_AMBIGUOUS | 有多個存活的實例符合所要求的 id。 |
E_WSL_INTEROP | WSL 互通無法解析到 Windows 上的瀏覽器。 |
E_BROWSER_DOWNLOAD | 下載或安裝瀏覽器失敗。 |
E_BROWSER_INSTALL_PRIVILEGE | 這次安裝需要一個互動式的特權工作階段。 |
E_BROWSER_UNINSTALL | 移除已安裝的瀏覽器失敗。 |
E_UNINSTALL_NOOP | 沒有可以移除的東西。 |
瀏覽器執行階段
| 錯誤碼 | 意義 |
|---|---|
E_EXTENSION_LOAD_REFUSED | 瀏覽器拒絕了這個未封裝的擴充功能。 |
E_ADDON_INSTALL | Gecko 暫時附加元件安裝失敗。 |
除錯協定
| 錯誤碼 | 意義 |
|---|---|
E_BROWSER_CONNECT | 無法開啟除錯連線。 |
E_BROWSER_CONNECTION_CLOSED | 除錯 socket 在工作階段中途關閉。 |
E_CDP_NOT_CONNECTED | 在沒有存活 CDP 傳輸的情況下發出了某個操作。 |
E_CDP_TIMEOUT | 某個 CDP 指令或 load 事件逾時。 |
E_CDP_OP_FAILED | 透過 CDP 執行的某個擴充功能操作失敗。 |
E_EXTENSION_ID_UNKNOWN | 無法透過 CDP 判定擴充功能 id。 |
E_RDP_PROTOCOL | 出現格式錯誤或非預期的 RDP 交換。 |
開發伺服器
| 錯誤碼 | 意義 |
|---|---|
E_DEV_SERVER_START | 開發伺服器啟動失敗。 |
E_DEV_SERVER_TIMEOUT | 開發伺服器啟動超過了它的逾時時間。 |
E_PORT_IN_USE | 所要求的埠號已被占用,已自動改用其他埠號。 |
E_PORT_UNAVAILABLE | 在所要求的埠號附近找不到可綁定的空閒埠號。 |
就緒契約
| 錯誤碼 | 意義 |
|---|---|
E_SESSION_NOT_FOUND | 這個專案與瀏覽器沒有存活的工作階段契約。 |
E_SESSION_EXISTS | 這個專案與瀏覽器已經存在一個存活的工作階段。 |
E_SESSION_STOPPED | 工作階段契約回報該工作階段已停止。 |
E_READY_TIMEOUT | 工作階段尚未就緒,--wait 就已逾時。 |
E_READY_ERROR_STATUS | 就緒契約回報該工作階段處於錯誤狀態。 |
控制通道
| 錯誤碼 | 意義 |
|---|---|
E_CONTROL_UNAVAILABLE | 控制通道不存在、不相符,或沒有回應。 |
E_CONTROL_DENIED | 工作階段拒絕了這次控制操作。 |
E_TOKEN_MISSING | 該操作需要一個工作階段權杖,但它並不存在。 |
E_EVAL_REFUSED | 該工作階段停用了 eval,或權杖不相符。 |
E_TIMEOUT | 該操作在逾時時間內沒有回應。 |
E_NOT_IMPLEMENTED | 該操作在這個情境或這個引擎上尚未實作。 |
E_TARGET_NOT_FOUND | 沒有任何分頁、frame 或情境符合所要求的目標。 |
E_HEADED_WINDOW_REQUIRED | 該介面需要一個有頭的瀏覽器視窗,而這個工作階段沒有。 |
E_USER_GESTURE_REQUIRED | 該介面需要一次真實的使用者手勢,而呼叫端無法合成它。 |
E_EVAL | 被求值的運算式在頁面內拋出例外。 |
E_INSPECT | 在受檢端內部進行 DOM 檢查失敗。 |
E_STORAGE | chrome.storage 拒絕了這次讀取或寫入。 |
日誌
| 錯誤碼 | 意義 |
|---|---|
E_LOGS_NOT_FOUND | 這個專案與瀏覽器沒有日誌串流。 |
E_LOGS_STREAM_GAP | follow 串流掉了部分事件。 |
建立
| 錯誤碼 | 意義 |
|---|---|
E_TEMPLATE_NOT_FOUND | 該範本不在目錄清單中,或沒有 manifest。 |
E_DESTINATION_NOT_EMPTY | 目的地已經有會衝突的檔案。 |
E_DESTINATION_NOT_WRITABLE | 目的地目錄無法寫入。 |
E_CREATE_DIR | 無法建立目標目錄。 |
E_CREATE_WRITE | 某個 scaffold 檔案無法寫入。 |
E_CREATE_TESTS_SETUP | 內建測試設定失敗。 |
E_GIT_SKIPPED | 因為沒有 git,所以略過了 git init。 |
其他所有情況
| 錯誤碼 | 領域 | 意義 |
|---|---|---|
E_PREVIEW_NO_DIST | preview | 解析出的輸出路徑下沒有未封裝的擴充功能。 |
E_SAFARI_TOOLCHAIN | safari | Safari 工具鏈不可用,或某次呼叫失敗。 |
E_PUBLISH_REJECTED | publish | 平台拒絕了這次上傳。 |
E_AUTH_REQUIRED | publish | 該操作需要一個驗證權杖,但它並不存在。 |
E_TELEMETRY_WRITE | telemetry | 無法寫入遙測同意檔案。 |
E_DOCTOR_CHECKS_FAILED | doctor | 有一項或多項 doctor 檢查回報失敗。 |
E_INTERRUPTED | internal | 該操作在完成之前被中斷。 |
E_INTERNAL | internal | 一個非預期的錯誤傳到了最上層的錯誤匯集點。 |
折疊名稱與舊名稱
codes.json 在這張表之外還帶了兩份額外對應:
folded把較細的清單名稱對應到已發布的家族錯誤碼上。例如E_ARG_REQUIRED會折疊為E_ARGS,E_BROWSER_NOT_INSTALLED會折疊為E_BROWSER_NOT_FOUND。legacy把信封出現之前的三種命名慣例對應到這張表上:ready.json的 snake_case 錯誤碼(profile_locked對應E_PROFILE_LOCKED)、PascalCase 的錯誤名稱(TargetNotFound對應E_TARGET_NOT_FOUND),以及 kebab-case 的 doctor 檢查項 id(eval-token對應E_TOKEN_MISSING)。

