Windows 11下使用Yarn启动Vite+React开发服务器出现EPIPE错误,npm可正常运行
这种跨平台下包管理器的差异问题确实挺闹心的,既然你在Linux上用Yarn没问题,Windows上npm也能正常启动,那大概率是Yarn在Windows环境下的缓存、版本兼容性或者进程权限问题导致的esbuild服务异常(EPIPE错误本质是进程间通信的管道被中断,说明esbuild服务意外停止了)。给你几个针对性的解决办法,按顺序试试:
清除Yarn缓存并重新安装依赖
Windows下Yarn的缓存很容易出现损坏的二进制文件(比如esbuild的Windows版本包),先彻底清理再重装:- 执行命令清除Yarn缓存:
yarn cache clean - 删除项目根目录下的
node_modules文件夹和yarn.lock文件 - 重新安装依赖:
yarn install - 再尝试启动服务:
yarn start
- 执行命令清除Yarn缓存:
升级Yarn到最新稳定版本
你当前用的Yarn 1.22.21是比较旧的版本了,可能和Vite 5.0.0、Node.js 18.12.0在Windows上的适配存在bug。执行命令升级Yarn:npm install -g yarn升级完成后再重复上面的清除缓存重装步骤,试试启动服务。
检查Windows安全软件是否拦截了esbuild进程
有时候Windows Defender或者第三方杀毒软件会把esbuild这类快速启动的编译进程误判为可疑程序,强制终止后就会出现EPIPE错误。可以临时关闭安全软件,或者把项目目录和node_modules/esbuild文件夹添加到信任列表,再尝试启动服务。强制指定使用项目本地的esbuild
偶尔会出现Yarn全局缓存的esbuild版本和项目依赖的版本不匹配的情况,你可以修改package.json里的启动命令,先验证本地esbuild是否能正常运行:"scripts": { "start": "npx esbuild --version && vite --force", // 其他脚本不变 }然后执行
yarn start,如果esbuild能正常输出版本号,再看Vite是否能正常启动。切换Yarn的镜像源
如果是镜像源的问题导致下载的esbuild包损坏,可以切换到官方npm源:yarn config set registry https://registry.npmjs.org/之后再重新安装依赖试试。
这些方法应该能解决你遇到的问题,毕竟npm能正常运行,说明项目本身的配置和依赖是没问题的,重点排查Yarn在Windows下的环境问题就好。
备注:内容来源于stack exchange,提问作者Muhammad Fahad

