Wrangler “write EOF” 在 Windows 上:实际修复
Source: Dev.to
Problem
在 Windows 上使用 Cloudflare Wrangler(或使用 Cloudflare 适配器的 Astro)时,开发者可能会在启动项目时遇到神秘的 “write EOF” 错误。
Investigation
-
初始变通办法 – 按照 GitHub 评论的建议运行
install_tools.bat能解决错误,但它会安装许多不必要的组件:- Python
- Visual Studio 核心文件
- 各种 SDK 文件
-
有针对性的方法 – 最合理的组件似乎是 Microsoft.VisualStudio.2022.BuildTools。通过
winget安装它:winget install Microsoft.VisualStudio.2022.BuildTools --override "--wait --quiet --add Microsoft.VisualStudio.Workload.VCTools"这同样修复了错误,但仍会拉取大量额外工具(VS Core、编辑器字体、Windows SDK 的部分内容)。
-
最小化测试 – 清理系统后,唯一剩余的 Microsoft 包是 Visual C++ 2015–2022 可再发行组件(x64 和 x86 两个版本)。移除其他所有内容(包括 Build Tools)后,错误仍然不存在。
-
验证 – 卸载 VC++ 可再发行组件后,错误立即再次出现。重新安装它们后错误消失。全新 Windows 虚拟机的测试进一步确认 只需要 VC++ 可再发行组件;不需要 Build Tools、SDK 或 Python。
Solution
在 Windows 上安装 Microsoft Visual C++ 2015–2022 可再发行组件(x64 和 x86 两个版本)。
# 从 Microsoft 下载并安装可再发行组件:
# https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
安装这些运行时后,Wrangler 能正常启动, “write EOF” 错误不再出现。
Why This Works
Wrangler 依赖于需要 Visual C++ 运行时的原生 Node.js 模块。当运行时缺失时,底层进程通信会失败,导致出现通用的 “write EOF” 流错误,而不是明确的缺少依赖的提示。提供 VC++ 运行时即可满足此需求。
Conclusion
网上流传的各种繁琐解决方案(例如运行 install_tools.bat 或安装完整的 Visual Studio Build Tools)并非必要,只会让系统变得臃肿。仅安装 Microsoft Visual C++ 2015–2022 可再发行组件(x64 与 x86)就是在 Windows 上解决 Cloudflare Wrangler “write EOF” 错误的最小、最干净的办法。
你可以在我的 GitHub gist 中看到问题和步骤的简要概述。