TypeError: crypto$2.getRandomValues is not a function

发布于:2025-06-11 ⋅ 阅读:(25) ⋅ 点赞:(0)

这个错误和 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


🔍 安装建议:

# 安装 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