Skip to main content
以每次状态变化一个 JSON 帧的方式跟随一个正在运行的会话。 一个终止信封无法描述一整个会话,因此 devstartpreview 会为每一次生命周期状态变化流式输出一个 schema-1 帧。每个帧本身就是独立成行的一个完整结果信封

打开这个流

这个流由 EXTENSION_OUTPUT 环境变量控制。把它设为 jsonndjson,帧就会独占 stdout:
流开启期间,原本共用 stdout 的人类可读文案会移到 stderr。错误文案始终留在 stderr,机器模式绝不会隐藏失败。

帧的状态

每个帧的 value 都携带会话身份:commandbrowserdistPathpidport,以及已知时的 readyPatheventsPathrunIdinstanceIdtoolchainVersion

编译失败

compile-failed 帧会把编译器输出放在 value.output 里,所以你永远不需要去刮 stdout。这段输出已经去掉 ANSI 控制符,并且上限为 2000 个字符。当上限把它截断时,该帧会设置 truncated: true 一次会话中的第一次失败使用错误码 E_FIRST_COMPILE,之后每一次都使用 E_COMPILE

ready 遵循契约

ready 帧在触发之前会读取 ready.json。编译可能成功,而浏览器却拒绝了这个扩展,发生这种情况时契约会保持在 error 这种情况下,流改为发出一个错误码为 E_READY_ERROR_STATUSfailed 帧,并由 value.readyCode 指出契约自身的错误码。

浏览器退出

一个后台监视器每秒轮询一次 ready.json,查找启动器写下的退出戳记。当 browserExitedAt 出现时,流会发出一个 browser-exited 帧。 这个帧的错误码取决于契约里的证据:
  • E_PROFILE_LOCKED:契约显示配置文件被锁定。浏览器根本没有启动,另一个会话正占用该配置文件。
  • E_BROWSER_LAUNCH:其余所有意外退出。
当契约中有这些字段时,帧的 value 会携带 exitCodebrowserExitedAt

下一步