前情

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

坑位

对于开发er来说换设备是件比较痛苦的事,因为一堆开发环境和开发工具需要重新配置和安装,这次也不例外,大概经过小半天的时间,终于可以干活了,但是当我启动我的后台管理项目的时候报如下错:

> pure-admin-thin@3.9.7 dev D:\Code\dingdong-smart-admin-vue
> NODE_OPTIONS=--max-old-space-size=2048 vite node:events:496
throw er; // Unhandled 'error' event
^ Error: spawn D:\Code\dingdong-smart-admin-vue\node_modules\.pnpm\esbuild@0.11.3\node_modules\esbuild\esbuild.exe ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:285:19)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
Emitted 'error' event on ChildProcess instance at:
at ChildProcess._handle.onexit (node:internal/child_process:291:12)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
errno: -4058,
code: 'ENOENT',
syscall: 'spawn D:\\Code\\dingdong-smart-admin-vue\\node_modules\\.pnpm\\esbuild@0.11.3\\node_modules\\esbuild\\esbuild.exe',
path: 'D:\\Code\\dingdong-smart-admin-vue\\node_modules\\.pnpm\\esbuild@0.11.3\\node_modules\\esbuild\\esbuild.exe',
spawnargs: [ '--service=0.11.3', '--ping' ]
} Node.js v22.17.1
 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文挡里,挺不错的,为后来踩坑者提供了爬坑提点

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

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

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

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

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

思考

AI真的是不错的生活助手,也是开发的好帮手,虽然AI提供的方法不是百分百最优的也不一定是全对的,在这次跟AI沟通的时候,AI有说有可能是node版本太低了,让我切版到18版本,删掉pnpm.lock文件重装安装,确实是没有出现esbuild的问题了,但是因为删掉了pnpm.lock,导致安装的很多依赖包版本不对,项目出现了很多依赖包的错误,如果有耐心的话解决依赖包问题,我相信也是能解决问题的,但是因为是多人合作项目而且是已经在线上运行很长一段时间的项目,不宜大动项目依赖,我觉得不是最佳方案,最后还是回退多次尝试后找到方案3的方式解决的

个人的能力和知识都是有限的,遇到问题优先和同事沟通,也许他们也踩到同样坑,他们很有可能有自己的爬坑结果,你能最快的速度解决问题投入项目开发,但是他们提供的方案并不一定是最优的,要自己针对错误做一些尝试,如上方案3就是我觉得同事给的方法应该不是最佳的,我个人尝试出来的,其实解决这次问题对我也有一点提醒,项目安装完依赖的时候,如果有警告得多留意,当项目跑不起来的时候,也许这个警告就是问题根源,当然对于做技术的我们要相信坑坑难爬,坑坑过,何况现在还有强大的AI了

同时附上我和AI针对此问题的沟通过程:https://www.doubao.com/thread/w50933e1fe6479913

我的后台管理项目报Error: spawn …esbuild.exe ENOENT了的更多相关文章

  1. vue,vuex的后台管理项目架子structure-admin,后端服务nodejs

    之前写过一篇vue初始化项目,构建vuex的后台管理项目架子,这个structure-admin-web所拥有的功能 接下来,针对structure-admin-web的不足,进行了补充,开发了具有登 ...

  2. vue初始化项目,构建vuex的后台管理项目架子

    构架vuex的后台管理项目源码:https://github.com/saucxs/structure-admin-web 一.node安装 可以参考这篇文章http://www.mwcxs.top/ ...

  3. android stdio 编译项目报Error:Failed to find target with hash string 'android-24

    android stdio 编译项目报Error:Failed to find target with hash string 'android-24 查看已有的SDK 设置项目的sdk为 25 an ...

  4. jenkins打包前端项目报 error: index-pack died of signal 15 问题解决

    jenkins打包前端项目报 error: index-pack died of signal 15 问题解决 前几天用jenkins打包一个前端项目的时候出现了 error: index-pack ...

  5. SSM 电影后台管理项目

    SSM 电影后台管理项目 概述 通过对数据库中一张表的CRUD,将相应的操作结果渲染到页面上. 笔者通过这篇博客还原了项目(当然有一些隐藏的坑),然后将该项目上传到了Github.Gitee,在末尾会 ...

  6. 修改 spawn node.exe" ENOENT at notFoundError问题

    Ionic server启动后,出现spawn node.exe" ENOENT at notFoundError ...\node_modules\cross-spawn\lib\enoe ...

  7. docloud后台管理项目(开篇)

    最近朋友做app需要web做后台管理,所以花了一周时间做了这个项目. 废话不多说,开发环境是nginx+php5.3,使用thinkphp框架.是一个医疗器械数据统计的后台,业务功能很简单就是查看用户 ...

  8. 升级ionic版本后,创建新项目报Error Initializing app错误解决

    命令行,进入项目路径后,运行 ionic start myApp --v2 命令执行后,报如下错误 Installing npm packages...Error with start undefin ...

  9. 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo

    ¶项目分析 一个完整的网站服务架构,包括:   1.web frame ---这里应用express框架   2.web server ---这里应用nodejs   3.Database ---这里 ...

  10. 用weex create 创建app项目 报 ERROR in index.web.js from UglifyJs 错误!

    用weex create创建一个APP项目,安装依赖后运行报 这个是package.json index.web.js 在dist目录下是build时生成的. 上面的答案没有给大家细节,不好意思致歉下 ...

随机推荐

  1. 05 - Multitouch/RoutedEvents例子

    文中例子是基于wpf Canvas写的,由于Maui还没有支持Canvas,所以顺手自己写一个.之前写了一个InkCanvas,发现扩展性太差了,这次写这个Canvas,支持自定义碰撞测试等.自己写的 ...

  2. [Ynoi2016] 炸脖龙 I

    题目传送门 已经能过 hack,原因:做快速幂的时候需要微判一下边界.很好奇 lxl 为什么不卡 显然区间加可用线段树做. 然后操作二用扩展欧拉定理,每个 \(p\) 最多递归 \(\log\) 层, ...

  3. 多Agent协作入门:群组聊天-AgentGroupChat

    大家好,我是Edison. 近日抽空学习了下Semantic Kernel提供的AgentGroupChat对象写了一个多Agent群组对话的Demo,总结一下分享与你.当然,多Agent协作还有其他 ...

  4. useSignal

    背景 我要监听一个视频播放当前进度时间,并把显示到页面上. 使用传统state function DemoOne() { const [currentTime, setCurrentTime] = u ...

  5. katex1-初步使用

    安装和使用 csdn和npm均可 加载完成后,自动渲染整个body里的公式 <!DOCTYPE html> <html lang="en"> <hea ...

  6. CF724G Xor-matic Number of the Graph 题解

    CF724G Xor-matic Number of the Graph 直接维护异或和之和,显然不可能.由于二进制位相互独立,我们考虑维护每一个二进制位的出现次数,再乘以位权加入结果. 对于路径的维 ...

  7. Rust修仙之道 第十三章 并行境 · 多线程、共享与消息灵道

    第十三章:并行境 · 多线程.共享与消息灵道 "术者一身不可至万处,分灵影可并行化心." 顾行云于静室冥修,心观符阵延迟,渐悟:"纵术法再快,若不能并行,终受瓶颈所限.& ...

  8. 安装 mathtype

    简介 有些会议一定要用mathtype对公式进行编辑,其实我觉得office提供的公式编辑挺好的 参考链接 https://www.bilibili.com/video/BV14i4y1V7gt?p= ...

  9. 使用math库给我们定一个一些常用常量

    简介 使用math库给我们定一个一些常用常量 参考链接 https://www.quantstart.com/articles/Mathematical-Constants-in-C/ code #d ...

  10. 探索 MCP C# SDK:实现大语言模型与应用的无缝对接

    探索 MCP C# SDK:实现大语言模型与应用的无缝对接 在当今人工智能快速发展的时代,大语言模型(LLMs)已经成为众多应用的核心驱动力.然而,如何让这些强大的模型与各种数据源和工具进行有效集成, ...