后臺管理項目報Error:?spawn?…esbuild.exe?ENOENT的解決過程
前情
最近公司進(jìn)行搬遷,換到了新租的辦公室,老板為了面子,說要統(tǒng)一設(shè)備,全部用一樣型號的,在網(wǎng)上租了一批辦公設(shè)備,于是我們被迫進(jìn)行了設(shè)備換新,這里吐槽下,新設(shè)備性能確實好了一些,但是不支持2K雙屏,另一副屏是糊的,看著非常難道,讓人抓狂,
坑位
對于開發(fā)er來說換設(shè)備是件比較痛苦的事,因為一堆開發(fā)環(huán)境和開發(fā)工具需要重新配置和安裝,這次也不例外,大概經(jīng)過小半天的時間,終于可以干活了,但是當(dāng)我啟動我的后臺管理項目的時候報如下錯:
> 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 語言編寫的,為了能在不同操作系統(tǒng)(Windows、Linux、macOS 等)上高效運行,它會在安裝時根據(jù)當(dāng)前系統(tǒng)環(huán)境,下載對應(yīng)的 預(yù)編譯可執(zhí)行文件(比如 Windows 下的 esbuild.exe),esbuild 是 Vite 等構(gòu)建工具的核心依賴,在項目啟動時需要調(diào)用它的可執(zhí)行文件進(jìn)行代碼編譯 / 打包。如果這個文件缺失,就會直接導(dǎo)致啟動失敗,至于缺失的原因我也不是特別清楚,如果有大神知道歡迎不吝留言分享
解決方案
方案1:
也是最開始我的的解決方法,我這邊不是缺少esbuild.exe文件,我從同事那里拷來這個文件放到指定目錄,這樣也算暫時解決了問題,這也是另一個同事他摸索出來提供的解決方案
方案2:
新來的同事在初始投入這個項目的時候也遇到同樣問題,他給我提供的解決方法是手動生成esbuild.exe,在項目根目錄下手動運行如下命令,親測也是可行的,同事還把這種方法備注了在項目README.md文擋里,挺不錯的,為后來踩坑者提供了爬坑提點
node .\node_modules\esbuild\install.js
后來問了下AI執(zhí)行此命令大概做的事情如下:
node_modules/esbuild/install.js 是 esbuild 包自帶的安裝腳本,它的核心作用就是:
- 檢查當(dāng)前系統(tǒng)環(huán)境,確定需要下載的 esbuild 預(yù)編譯可執(zhí)行文件版本。
- 自動下載對應(yīng)的可執(zhí)行文件,并將其放置到 node_modules/esbuild 目錄下的正確位置(確保 Node.js 后續(xù)能找到并調(diào)用它)。
當(dāng)你手動運行這個腳本時,相當(dāng)于強制觸發(fā)了 esbuild 可執(zhí)行文件的 “補裝” 或 “初始化” 流程,把之前缺失的 esbuild.exe(或其他系統(tǒng)對應(yīng)的可執(zhí)行文件)補充完整,這樣項目再運行時,就能正常調(diào)用 esbuild 了
方案3:
我一直在想,難道出現(xiàn)這種情況只能像方案1和2那樣,手動拷貝或者生成esbuild.exe 么,雖然解決問題,但是我一直覺得不是理想的,于是我想到是不是安裝過程出現(xiàn)什么警告什么報錯我沒有注意,我于是把項目node_modules刪掉,重新運行pnpm install

果然出現(xiàn)如上圖的警告,而上圖警告中就有牽扯到esbuild,再把整個安裝的日志提供給AI,AI的解釋是:pnpm 出于安全等考慮,默認(rèn)會攔截一些依賴的構(gòu)建腳本執(zhí)行,需要你通過 pnpm approve-builds 命令來選擇允許哪些依賴運行構(gòu)建腳本,但是我按AI說的步驟:

并沒有解決,我此時想到文件生成失敗有沒有可能跟系統(tǒng)權(quán)限有關(guān),于是我以管理員權(quán)限啟動CMD,再執(zhí)行pnpm install,還是有如上警告,我于是再運行pnpm approve-builds ,我為了防止又有別的奇怪問題,我全部選了

按回車后再選擇y,看到下如下執(zhí)行日志

此時我再去跑項目,項目跑成功了
思考
AI真的是不錯的生活助手,也是開發(fā)的好幫手,雖然AI提供的方法不是百分百最優(yōu)的也不一定是全對的,在這次跟AI溝通的時候,AI有說有可能是node版本太低了,讓我切版到18版本,刪掉pnpm.lock文件重裝安裝,確實是沒有出現(xiàn)esbuild的問題了,但是因為刪掉了pnpm.lock,導(dǎo)致安裝的很多依賴包版本不對,項目出現(xiàn)了很多依賴包的錯誤,如果有耐心的話解決依賴包問題,我相信也是能解決問題的,但是因為是多人合作項目而且是已經(jīng)在線上運行很長一段時間的項目,不宜大動項目依賴,我覺得不是最佳方案,最后還是回退多次嘗試后找到方案3的方式解決的
個人的能力和知識都是有限的,遇到問題優(yōu)先和同事溝通,也許他們也踩到同樣坑,他們很有可能有自己的爬坑結(jié)果,你能最快的速度解決問題投入項目開發(fā),但是他們提供的方案并不一定是最優(yōu)的,要自己針對錯誤做一些嘗試,如上方案3就是我覺得同事給的方法應(yīng)該不是最佳的,我個人嘗試出來的,其實解決這次問題對我也有一點提醒,項目安裝完依賴的時候,如果有警告得多留意,當(dāng)項目跑不起來的時候,也許這個警告就是問題根源,當(dāng)然對于做技術(shù)的我們要相信坑坑難爬,坑坑過,何況現(xiàn)在還有強大的AI了
總結(jié)
到此這篇關(guān)于后臺管理項目報Error: spawn …esbuild.exe ENOENT的解決過程的文章就介紹到這了,更多相關(guān)Error: spawn …esbuild.exe ENOENT內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node?NPM庫增強版globby?Promise使用學(xué)習(xí)
這篇文章主要為大家介紹了node?NPM庫增強版globby?Promise使用學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Node.js中Promise未處理的拒絕報錯的常見原因及解決方案
在Node.js應(yīng)用開發(fā)中,Promise未處理的拒絕(Unhandled Promise Rejection)是一個常見的錯誤,本文系統(tǒng)性總結(jié)Node.js中Promise未處理的拒絕報錯的常見原因及解決方案,并提供豐富的代碼和表格示例分析,需要的朋友可以參考下2025-06-06
Node.js服務(wù)端實戰(zhàn)之服務(wù)啟動過程詳解
這篇文章主要為大家介紹了Node.js服務(wù)端實戰(zhàn)之服務(wù)啟動過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
npm安裝yarn后找不到y(tǒng)arn報錯的解決過程
這篇文章主要給大家介紹了關(guān)于npm安裝yarn后找不到y(tǒng)arn報錯的解決過程,文中通過圖文介紹的非常詳細(xì),對遇到同樣問題的同學(xué)具有一定的參考性,需要的朋友可以參考下2023-04-04

