Windows 下 pnpm dev 报错:spawn esbuild.exe ENOENT(pnpm workspace / monorepo)

环境:Windows 10/11 + pnpm workspace(monorepo)+ Vite

现象:执行 pnpm dev 直接退出,报 esbuild.exe ENOENT

问题现象:pnpm dev 直接退出,提示 esbuild.exe 找不到

运行 pnpm dev,控制台报错核心如下:
ENOENT 的含义是:系统找不到指定的文件或路径。即 要执行的 esbuild.exe 不存在。

1) 先检查 pnpm 是否禁用了 install scripts(最常见原因)

esbuild 需要在安装时跑 postinstall 去下载/放置二进制文件,如果 scripts 被禁用就会缺 esbuild.exe。

bash 复制代码
pnpm config get ignore-scripts
  • 如果输出是 true,执行:
bash 复制代码
pnpm config set ignore-scripts false

ignore-scripts 返回 undefined 说明 没有开启忽略脚本(默认就是允许执行 install/postinstall),所以不是 "scripts 被禁用导致 esbuild 二进制没下到本地" 这个原因。

确认 esbuild.exe 是否真的不存在

bash 复制代码
dir node_modules\.pnpm\esbuild@0.11.3\node_modules\esbuild\esbuild.exe

esbuild.exe 根本没装出来(路径不存在),所以才会 spawn ... esbuild.exe ENOENT。

重装

bash 复制代码
rd /s /q node_modules
pnpm install 

上图黄色警告表示:pnpm 当前启用了"忽略构建脚本"的安全机制(pnpm v10 的 approve-builds 机制),所以 esbuild 的 install/postinstall 脚本被跳过了,二进制当然就不会生成 ⇒ 最终 esbuild.exe ENOENT

截图里明确写了:

bash 复制代码
Ignored build scripts: ... esbuild ... Run "pnpm approve-builds" ...

所以只要允许 esbuild 的构建脚本执行即可

在仓库根目录执行审批

bash 复制代码
pnpm approve-builds

会进入一个交互列表,把 esbuild(以及你需要的 @swc/core、@parcel/watcher 等)选为允许(一般用空格勾选,回车确认)。

这次已经成功了 ✅(日志里 esbuild ... Running postinstall script, done,说明二进制脚本终于执行了)。

验证

bash 复制代码
dir /s /b node_modules\.pnpm\esbuild.exe

重新启动项目即可

相关推荐
IT_陈寒3 分钟前
Java空指针这次真把我坑惨了
前端·人工智能·后端
八荒启·交互动画1 小时前
# Web特效020—让 Web 特效真正动起来:时间循环应该怎么接
前端·webgl·网页特效·八荒启-交互动画·八荒启
动恰客流统计1 小时前
线下零售数字化浪潮下,客流统计的3个核心发展趋势
大数据·前端·人工智能
用户938515635072 小时前
从小米前端面试题,彻底搞懂闭包、作用域链与 useState 惰性初始化
前端·面试
粥里有勺糖3 小时前
视野修炼第133期 | Native 回春了?
前端·github·agent
aichitang20243 小时前
前端小skill
前端·人工智能·算法·ai·前端框架
前端·柱子4 小时前
q-floodfill白边锯齿?一招搞定抗锯齿边缘问题
前端·html·canva可画
葡萄城技术团队4 小时前
SpreadJS V19.2新特性揭秘:功能区键盘提示
前端
计算机魔术师4 小时前
AI 幻觉导致的错误情报险些引发美军拦截中国船只
前端
万物智能4 小时前
SARADC模数转换—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
前端·后端