Skip to main content
请基于稳定的错误码来做分支判断,绝不要基于消息文本。 每一个失败信封都会带上同一张表中的某个 E_* 错误码。错误码只会新增,绝不会被重命名或移除。错误码旁边的消息属于自由文案,任何一个版本都可能改动。 这张表随 extension-develop/contract/codes.json 一起发布,参见 结果信封。

用法

项目

Manifest

编译

E_COMPILE 和 E_FIRST_COMPILE 是编译失败时的顶层错误码。上表中有十五行会出现在该帧的 error.details 里,每条诊断一个:E_MODULE_NOT_FOUND、E_CONTENT_SCRIPT_SYNTAX、E_CSS_PARSE、E_ENTRY_NOT_FOUND、E_ASSET_MISSING、E_SCRIPT_DEP_MISSING、E_RESERVED_FOLDER、E_CSS_PREPROCESSOR_MISSING、E_CSS_DEAD_REF、E_LOCALES_LAYOUT、E_WAR_INVALID、E_BACKGROUND_REQUIRED、E_REMOTE_RESOURCE_BLOCKED、E_PERF_BUDGET 和 E_ENV_NO_MATCH。同样这些错误码也会以 E_CODE: 前缀出现在成功构建的 warnings 字符串开头。见编译诊断。

远程项目与网络

浏览器二进制与启动

浏览器运行时

调试协议

开发服务器

就绪契约

控制通道

日志

创建

其他所有情况

折叠名与历史名

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)。
如果你的消费方遇到了表中没有的名称,请先通过这些映射把它解析出来,然后再做分支判断。

下一步