找回密码
 立即注册
首页 业界区 业界 我的后台管理项目报Error: spawn …esbuild.exe ENOENT ...

我的后台管理项目报Error: spawn …esbuild.exe ENOENT了

宛蛲 昨天 23:09
前情

最近公司进行搬迁,换到了新租的办公室,老板为了面子,说要统一设备,全部用一样型号的,在网上租了一批办公设备,于是我们被迫进行了设备换新,这里吐槽下,新设备性能确实好了一些,但是不支持2K双屏,另一副屏是糊的,看着非常难道,让人抓狂,
坑位

对于开发er来说换设备是件比较痛苦的事,因为一堆开发环境和开发工具需要重新配置和安装,这次也不例外,大概经过小半天的时间,终于可以干活了,但是当我启动我的后台管理项目的时候报如下错:
  1. > pure-admin-thin@3.9.7 dev D:\Code\dingdong-smart-admin-vue
  2. > NODE_OPTIONS=--max-old-space-size=2048 vite
  3. node:events:496
  4.       throw er; // Unhandled 'error' event
  5.       ^
  6. Error: spawn D:\Code\dingdong-smart-admin-vue\node_modules\.pnpm\esbuild@0.11.3\node_modules\esbuild\esbuild.exe ENOENT
  7.     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
  8.     at onErrorNT (node:internal/child_process:483:16)
  9.     at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
  10. Emitted 'error' event on ChildProcess instance at:
  11.     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
  12.     at onErrorNT (node:internal/child_process:483:16)
  13.     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
  14.   errno: -4058,
  15.   code: 'ENOENT',
  16.   syscall: 'spawn D:\\Code\\dingdong-smart-admin-vue\\node_modules\\.pnpm\\esbuild@0.11.3\\node_modules\\esbuild\\esbuild.exe',
  17.   path: 'D:\\Code\\dingdong-smart-admin-vue\\node_modules\\.pnpm\\esbuild@0.11.3\\node_modules\\esbuild\\esbuild.exe',
  18.   spawnargs: [ '--service=0.11.3', '--ping' ]
  19. }
  20. Node.js v22.17.1
  21.  ELIFECYCLE  Command failed with exit code 1.
复制代码
Why?

从错误信息能看出大概看出好像是生成esbuild.exe报错了,esbuild 是用 Go 语言编写的,为了能在不同操作系统(Windows、Linux、macOS 等)上高效运行,它会在安装时根据当前系统环境,下载对应的 预编译可执行文件(比如 Windows 下的 esbuild.exe),esbuild 是 Vite 等构建工具的核心依赖,在项目启动时需要调用它的可执行文件进行代码编译 / 打包。如果这个文件缺失,就会直接导致启动失败,至于缺失的原因我也不是特别清楚,如果有大神知道欢迎不吝留言分享
解决方案

方案1:

也是最开始我的的解决方法,我这边不是缺少esbuild.exe文件,我从同事那里拷来这个文件放到指定目录,这样也算暂时解决了问题
方案2:

新来的同事在初始投入这个项目的时候也遇到同样问题,他给我提供的解决方法是手动生成esbuild.exe,在项目根目录下手动运行如下命令,亲测也是可行的,同事还把这种方法备注了在项目README.md文挡里,挺不错的,为后来踩坑者提供了爬坑提点
  1. node .\node_modules\esbuild\install.js
复制代码
后来问了下AI执行此命令大概做的事情如下:
node_modules/esbuild/install.js 是 esbuild 包自带的安装脚本,它的核心作用就是:

  • 检查当前系统环境,确定需要下载的 esbuild 预编译可执行文件版本。
  • 自动下载对应的可执行文件,并将其放置到 node_modules/esbuild 目录下的正确位置(确保 Node.js 后续能找到并调用它)。
当你手动运行这个脚本时,相当于强制触发了 esbuild 可执行文件的 “补装” 或 “初始化” 流程,把之前缺失的 esbuild.exe(或其他系统对应的可执行文件)补充完整,这样项目再运行时,就能正常调用 esbuild 了
方案3:

我一直在想,难道出现这种情况只能像方案1那样,手动生成esbuild.exe 么,虽然解决问题,但是我一直觉得不是理想的,于是我想到是不是安装过程出现什么警告什么报错我没有注意,我于是把项目node_modules删掉,重新运行pnpm install
1.png

果然出现如上图的警告,而上图警告中就有牵扯到esbuild,再把整个安装的日志提供给AI,AI的解释是:pnpm 出于安全等考虑,默认会拦截一些依赖的构建脚本执行,需要你通过 pnpm approve-builds 命令来选择允许哪些依赖运行构建脚本,但是我按AI说的步骤:
2.png

并没有解决,我此时想到文件生成失败有没有可能跟系统权限有关,于是我以管理员权限启动CMD,再执行pnpm install,还是有如上警告,我于是再运行pnpm approve-builds ,我为了防止又有别的奇怪问题,我全部选了
3.png

按回车后再选择y,看到下如下执行日志
4.png

此时我再去跑项目,项目跑成功了
思考

AI真的是不错的生活助手,也是开发的好帮手,虽然AI提供的方法不是百分百最优的也不一定是全对的,在这次跟AI沟通的时候,AI有说有可能是node版本太低了,让我切版到18版本,删掉pnpm.lock文件重装安装,确实是没有出现esbuild的问题了,但是因为删掉了pnpm.lock,导致安装的很多依赖包版本不对,项目出现了很多依赖包的错误,如果有耐心的话解决依赖包问题,我相信也是能解决问题的,但是因为是多人合作项目而且是已经在线上运行很长一段时间的项目,不宜大动项目依赖,我觉得不是最佳方案,最后还是回退多次尝试后找到方案3的方式解决的
个人的能力和知识都是有限的,遇到问题优先和同事沟通,也许他们也踩到同样坑,他们很有可能有自己的爬坑结果,你能最快的速度解决问题投入项目开发,但是他们提供的方案并不一定是最优的,要自己针对错误做一些尝试,如上方案3就是我觉得同事给的方法应该不是最佳的,我个人尝试出来的,其实解决这次问题对我也有一点提醒,项目安装完依赖的时候,如果有警告得多留意,当项目跑不起来的时候,也许这个警告就是问题根源,当然对于做技术的我们要相信坑坑难爬,坑坑过,何况现在还有强大的AI了
同时附上我和AI针对此问题的沟通过程:https://www.doubao.com/thread/w50933e1fe6479913

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册