TypeError: crypto.getRandomValues is not a function

在运行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
相关推荐
FungLeo9 小时前
成为全栈·Vue 管理后台篇·Vue Router如何守住多角色后台边界
前端·javascript·vue.js·rbac·vue router·路由守卫·前端权限
FungLeo9 小时前
成为全栈·Vue 管理后台篇·分页只显示第一页:从接口total 定位到前端修复
前端·vue.js·状态模式·分页·naive ui·服务端分页·前端问题排查
ZhengEnCi9 小时前
苹果滑动为什么有「肉感」:橡皮筋越界阻尼与弹簧动画的物理原理
前端
Moment9 小时前
不会后期的我,发现了一个开源胶片神器😍😍😍
前端·后端·开源
L1mbo9 小时前
Lite模式 缓解微信开发者工具卡顿,附 uni-app 实践方案
前端·微信小程序
FungLeo9 小时前
成为全栈·Vue管理后台篇·仪表盘不是几张卡片:组合统计接口与角色视图
前端·javascript·vue.js·rbac·仪表盘·管理后台·tanstack query
ruanno_top10 小时前
可搜索的下拉框,键盘按不动:焦点进了下拉,事件还挂在触发器上
vue.js
SameX10 小时前
HarmonyOS 做桌面卡片 onAddForm 要同步返回但数据在数据库里的解法
前端
deli00710 小时前
手机夜景模式为什么要举 3 秒?8 帧 RAW 堆栈 SNR 实测
前端
松仔log10 小时前
Kotlin中级——callbackFlow
java·前端·kotlin