这个错误和 Node.js 版本有关,咱们来分析下原因并提供解决方案:
❗ 报错信息解析:
TypeError: crypto$2.getRandomValues is not a function
这个错误说明:crypto.getRandomValues
函数不是一个函数,也就是 不存在或未定义。而这个函数是 Vite 在启动时用来生成随机 ID 的一部分。
🎯 问题本质:
crypto.getRandomValues()
是 Web Crypto API 中的函数。在 Node.js 中,要使用这个 API 必须是 Node.js 19+ 才原生支持。
🔍 可能的原因:
你当前用的 Node.js 版本太旧,不支持 Vite 使用的 crypto.getRandomValues()
。
✅ 解决方案:
✅ 方法一:升级 Node.js 到 20(推荐)
执行以下操作查看版本:
node -v
建议你升级到 Node.js 20.x LTS 版本。
👉 下载链接:https://nodejs.org/zh-cn
升级后重新安装依赖:
rm -rf node_modules
npm install
npm run dev
🔁 其他建议:
- Node.js 升级后也记得升级
npm
:
npm install -g npm
- 如果你用的是
nvm
(Node.js 版本管理器),可以方便切换版本:
nvm install 20
nvm use 20
NVM版本管理器见我前面写的文章:NVM管理
🧠 学习点(英语角时间):
词汇 | 含义 |
---|---|
getRandomValues |
获取随机值的函数,属于 Web Crypto API |
TypeError |
类型错误,通常是对象不具备调用方法的能力 |
not a function |
不是一个函数,意味着你尝试调用一个不存在或未定义的函数 |
at async ... |
表示报错发生在一个异步函数内部 |
截至 2025 年 6 月,目前 Node.js 的稳定版本(LTS 和当前版本)如下:
✅ 当前最新稳定版本:
版本 | 类型 | 发布时间 | 说明 |
---|---|---|---|
v20.x | LTS(长期支持) | 2023年10月起 | 推荐用于生产环境 |
v21.x | Current(当前版) | 2023年10月起 | 新功能多,适合尝鲜测试 |
v22.x | Current(最新开发版) | 2024年4月 | 功能最全,但还不是 LTS |
💡 推荐选择:
生产环境开发:使用 Node.js v20.x LTS
- 兼容性强,Vite 等现代前端工具支持良好。
- 官方维护时间到 2026年4月,适合长期项目。
新特性体验/学习:可以试用 v22.x
🔍 安装建议:
官网下载安装:
👉 https://nodejs.org/zh-cn使用版本管理工具(推荐):
# 安装 nvm(Node 版本管理器)
# Windows 可用 nvm-windows:https://github.com/coreybutler/nvm-windows
# macOS/Linux:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 安装并使用 v20 LTS
nvm install 20
nvm use 20