当前位置: 首页 > news >正文

TypeError: crypto$2.getRandomValues is not a function

报错信息截图

这个错误 TypeError: crypto$2.getRandomValues is not a function 通常是因为 Node.js 的 crypto 模块在浏览器环境或某些构建工具中不可用或未正确引入。以下是几种可能的解决方案引入。以下是几种可能的解决方案:


1. 升级 Node.js 版本【推荐】

确保你使用的是较新的 Node.js 版本(建议 LTS 版本,如 18.x 或更高)。或者使用 nvm 切换一个高版本的 node。旧版本可能对 crypto 的支持不完善。(亲测使用18.20.8版本正常,16.20.2版本报错)

node -v	# 检查当前版本
nvm install 18.20.8	# 或通过 nvm 升级# 或使用 nvm 切换版本
nvm list # 查看可用版本
nvm use 18.20.8	# 切换版本

使用nvm命令报错请移步:nvm : 无法将“nvm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称


2. 检查 Vite 和依赖版本

确保 vite@vitejs/plugin-vue 等核心依赖是最新版本:

npm update vite @vitejs/plugin-vue
# 或
yarn upgrade vite @vitejs/plugin-vue

3. 全局 Polyfill 配置

vite.config.js 中添加 crypto 的 polyfill 配置:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';export default defineConfig({
plugins: [vue()],
define: {
// 确保全局 crypto 可用
global: {},
},
optimizeDeps: {
// 显式包含 crypto-browserify 或其他 polyfill
include: ['crypto-browserify'],
},
});

4. 安装 Polyfill 包

安装 crypto-browserify 并配置别名:

npm install crypto-browserify stream-browserify buffer
# 或
yarn add crypto-browserify stream-browserify buffer

然后在 vite.config.js 中配置别名:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
crypto: 'crypto-browserify',
stream: 'stream-browserify',
buffer: 'buffer',
},
},
});

5. 检查浏览器兼容性

如果问题出现在浏览器中,确保目标浏览器支持 Web Crypto API。对于旧浏览器,可以通过 polyfill.io 动态加载 polyfill:

<script src="https://polyfill.io/v3/polyfill.min.js?features=WebCrypto"></script>

6. 清理缓存并重试

删除 node_modules 和缓存后重新安装依赖:

rm -rf node_modules package-lock.json
npm cache clean --force
npm install

7. 检查项目配置

确保项目中没有自定义代码覆盖了全局 crypto 对象。例如,检查 main.js 或入口文件是否有类似 window.crypto = ... 的代码。


8. 降级 Vite(临时方案)

如果问题由 Vite 新版本引入,可以尝试降级到稳定版本:

npm install vite@4.4.0

验证修复

启动开发服务器,确认错误是否解决:

npm run dev
http://www.lryc.cn/news/612031.html

相关文章:

  • 北大、蚂蚁三个维度解构高效隐私保护机器学习:前沿进展+发展方向
  • AlexNet训练和测试CIFAR10
  • Python金融分析:从基础到量化交易的完整指南
  • 如何定位一个高并发场景下API响应时间从200ms突增到2s的问题
  • 生成模型实战 | Transformer详解与实现
  • 需求链路追踪
  • centos配置java环境变量
  • SpringCloud -- elasticsearch(二)
  • MonoFusion 与 Genie 3
  • 如何快速掌握大数据技术?大四学生用Spark和Python构建直肠癌数据分析与可视化系统
  • Apollo中三种相机外参的可视化分析
  • 「iOS」————单例与代理
  • iOS 文件管理实战指南 查看 App 数据与系统日志的完整方法
  • Python虚拟环境完全指南:pyenv vs venv 在macOS上的使用详解
  • SpringBoot 3.x整合Elasticsearch:从零搭建高性能搜索服务
  • Post-train 入门(1):SFT / DPO / Online RL 概念理解和分类
  • 未给任务“Fody.WeavingTask”的必需参数“IntermediateDir”赋值。 WpfTreeView
  • 嵌入式开发学习———Linux环境下IO进程线程学习(五)
  • 【PZSDR P201MINI】 P201Mini 软件无线电开发板:紧凑型射频系统的性能标杆
  • Debian系统更新实现
  • 在 Neo4j实现虚拟关系(间接)的可视化
  • (Python)待办事项升级网页版(html)(Python项目)
  • 识别 Base64 编码的 JSON、凭证和私钥
  • IntelliJ IDEA 2025.1.4.1 中文版
  • 防火墙(firewalld)
  • 医疗AI中GPU部署的“非对等全节点架构“方案分析(中)
  • 队列很多时,为什么RocketMQ比Kafka性能好?
  • Linux seLinux
  • 【通俗易懂】详解AI大模型微调中的常见超参数的作用
  • 工控机 vs 服务器:核心区别与应用场景深度解析