🚀 作者主頁: 有來技術
🔥 開源項目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template
🌺 倉庫主頁: GitCode︱ Gitee ︱ Github
💖 歡迎點贊 👍 收藏 ?評論 📝 如有錯誤敬請糾正!
目錄
- 問題描述
- 原因分析
- 核心問題:Node.js 版本不兼容
- 解決方案
- ? 方案一:升級 Node.js 至合規版本(推薦)
- ?? 方案二:降級 Vite 至 6.x(臨時方案)
- 技術決策建議
問題描述
將 Vite 從 6.x 升級至 7.x 后,執行 pnpm run dev
時出現以下錯誤:
error when starting dev server:
TypeError: crypto.hash is not a function
原因分析
核心問題:Node.js 版本不兼容
- Vite 7 的依賴變更:Vite 7 內部使用
crypto.hash()
等現代 Web Crypto API,該特性僅在 Node.js 20.19.0+ 或 22.12.0+ 中穩定支持。 - Node.js 21 的定位問題:
- 21.x 屬于非 LTS 版本(奇數版本為實驗性分支),API 穩定性低于 LTS 版本。
- 在 Node.js 21 中
crypto.hash()
未完全實現或存在兼容性差異。
解決方案
? 方案一:升級 Node.js 至合規版本(推薦)
- 安裝符合要求的 Node.js 版本:
# 使用 nvm 切換版本(推薦) nvm install 22.12.0 nvm use 22.12.0
- 驗證 Node.js 版本:
node -v # 應輸出 v22.12.0 或更高
- 重新安裝依賴并啟動:
pnpm install && pnpm run dev
?? 方案二:降級 Vite 至 6.x(臨時方案)
修改 package.json
鎖定 Vite 版本至 6.x 最新補丁版本,清除緩存并重新安裝依賴。
技術決策建議
從技術演進角度,升級 Node.js + 保留 Vite 7 是最優路徑。Node.js 22 作為 LTS 版本(2023 年 10 月發布)已修復大量安全漏洞,并原生支持 ES2025 特性集。若項目需長期維護,應優先保障基礎設施的現代性。