在运行vue3项目时,终端报错
vbnet
error when starting dev server:
TypeError: crypto.getRandomValues is not a function

这个错误说明:crypto.getRandomValues 不是一个函数方法,也就是不存在或者是未定义的一个方法。这个方法是vite在启动时用来生成随机 ID 的一部分。
crypto.getRandomValues()
是 JavaScript 中用于生成加密级安全随机数的 Web API 方法,属于 Web Crypto API 的一部分。该方法通过调用操作系统级别的加密安全伪随机数生成器(CSPRNG)生成随机数,具有高随机性和不可预测性,适用于需要高安全性的场景(如密码生成、安全认证等)。
核心特性
- 安全性:生成的随机数符合密码学标准,不可预测且抗攻击。
- 工作原理:依赖操作系统熵池(如键盘敲击时间、鼠标轨迹等物理事件),确保随机性。
- 返回值 :返回填充了随机数的 TypedArray(如
Uint8Array
、Uint16Array
等)。
适用场景
- 密码学应用:生成加密密钥、会话令牌等。
- 安全敏感场景:如在线支付验证、敏感数据访问权限控制。
问题原因
要使用这个 API 必须是 Node.js 19+ 才支持,你当前用的 Node.js 版本过低,不支持 Vite 使用的 crypto.getRandomValues()
解决方案
nodejs升级到20以上的稳定版本,升级完成后,删除node_modules包,重新安装依赖
以nvm为例:依次执行命令
bash
# 升级到20版本---20.19.4是个示例,可根据实际进行调整
nvm install 20.19.4
nvm use 20.19.4
#删除原有node_modules
rm -rf node_modules
# 重新安装依赖
npm install
npm run dev