worker 通过 start_web_frontend 启动 Next.js,并在 .next/BUILD_ID 变化时重启它。两个子进程创建位置均使用 openprogram._compat 中的共享辅助函数 no_window_creation_flags。每个调用函数都像构建函数一样,在自己的作用域内导入该辅助函数。构建函数中的局部导入不能为另一个函数提供绑定。
现有平台辅助函数在 POSIX 上提供零标志,在 Windows 上提供后台窗口标志。命令构造、环境传递、端口回收及 manifest 修补保持当前行为。初次创建失败时,报告 OSError 后返回 None。重建后的创建失败时报告 OSError,监听器仍可观察下一次构建。关闭时选择最近一次成功创建的子进程句柄。
组件测试通过模拟子进程调用公开启动入口,捕获生产监听器回调而不启动无限运行的线程。临时 BUILD_ID 文件触发连续重建。测试验证初次与重复创建位置的辅助函数标志、最新子进程关闭,以及创建失败后的恢复。进程创建和端口回收被隔离,因此检查不影响运行中的 App。测试先在缺少导入的基线上失败,再在贡献者的修复后通过。
本次改动恢复既有行为,不改变依赖、API、配置或安全边界。监听器调度、关闭取消及无关平台行为不在此次修复范围内。
贡献者添加的两处局部导入实现了此修复。发布前需要行为检查和独立审查;具体命令与结果记录在审查记录中。