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)。

