node ---- 解决错误【Error: error:0308010C:digital envelope routines::unsupported】

news2025/4/17 14:19:17

1. 报错

在 Node.js 18.18.0 的版本中,遇到以下错误:

this[kHandle] = new _Hash(algorithm, xofLen);
                  ^
Error: error:0308010C:digital envelope routines::unsupported

这个错误通常发生在运行项目或构建时,尤其是在使用 Webpack、Vite 或其他构建工具时。

2. 报错截图

输入图片说明

3. 错误原因

该错误的根本原因是 Node.js 17+ 默认使用了 OpenSSL 3.0,而 OpenSSL 3.0 移除了对一些旧版加密算法(如 MD4 、 MD5 等)的支持。如果你的项目或依赖库中使用了这些旧版算法,就会触发此错误。

4. 解决方案一:临时解决方案:启用旧版 OpenSSL 提供程序

通过设置环境变量 NODE_OPTIONS ,可以启用旧版 OpenSSL 提供程序,从而解决兼容性问题。

4.1 Linux/MacOS
export NODE_OPTIONS=--openssl-legacy-provider
4.2 Windows
set NODE_OPTIONS=--openssl-legacy-provider
4.3 在 package.json 中设置

如果你希望在运行脚本时自动应用此设置,可以修改 package.json :

"scripts": {
  "dev:h5:set": "SET NODE_OPTIONS=--openssl-legacy-provider && npm run build:h5 -- --watch",
  "dev:h5:export": "export NODE_OPTIONS=--openssl-legacy-provider && npm run build:h5 -- --watch"
}

5. 解决方案二:降级 Node.js 版本

如果你的项目对 Node.js 版本要求不高,可以降级到 Node.js 16 或更低版本,因为这些版本默认使用 OpenSSL 1.1.1,不会触发此错误。

  • 使用 nvm 切换 Node.js 版本:
nvm install 16
nvm use 16

6. 解决方案三:更新项目依赖

检查项目中是否有依赖库使用了旧版加密算法,并尝试更新这些依赖库到最新版本。通常,新版本会修复与 OpenSSL 3.0 的兼容性问题。

7. 解决方案四:修改 Webpack 配置

如果你使用的是 Webpack,可以通过修改配置来避免使用旧版加密算法:

module.exports = {
  output: {
    hashFunction: 'sha256', // 使用 SHA-256 替代 MD5
  },
};

8. 注意事项

  1. 临时解决方案的风险 : --openssl-legacy-provider 是一个临时解决方案,旧版 OpenSSL 提供程序可能存在安全风险,建议仅在开发环境中使用。
  2. 生产环境 :在生产环境中,应尽量避免使用临时解决方案,而是通过更新依赖或降级 Node.js 版本来解决问题。
  3. 长期解决方案 :建议尽快更新项目或依赖库,避免使用旧版加密算法。

9. Node.js 版本

由于使用的是 taro 3.6.7 框架,所以在本地开发时,存在 node 的版本要求,因此不对版本降级处理。

输入图片说明

10. 本地使用临时方案成功解决

输入图片说明

11. 总结

错误是由于 Node.js 17+ 默认使用 OpenSSL 3.0 导致的。通过启用旧版 OpenSSL 提供程序、降级 Node.js 版本或更新项目依赖,可以解决此问题。在开发环境中,可以使用临时解决方案快速修复问题,但在生产环境中,建议采用更安全的长期解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2330777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯——走迷宫问题(BFS)

这是一个经典的BFS算法 1. BFS算法保证最短路径 核心机制:广度优先搜索按层遍历所有可能的路径,首次到达终点的路径长度即为最短步数。这是BFS的核心优势。队列的作用:通过队列按先进先出的顺序处理节点,确保每一步探索的都是当…

详解 Redis repl_backlog_buffer(如何判断增量同步)

一、repl_backlog_buffer 复制积压缓冲区(Replication Backlog Buffer) 是一个环形内存区域(Ring Buffer),用于临时保存主节点最近写入的写命令,以支持从节点断线重连后的增量同步。 1.1 三个复制偏移量 …

使用PyTorch实现ResNet:从残差块到完整模型训练

ResNet(残差网络)是深度学习中的经典模型,通过引入残差连接解决了深层网络训练中的梯度消失问题。本文将从残差块的定义开始,逐步实现一个ResNet模型,并在Fashion MNIST数据集上进行训练和测试。 1. 残差块&#xff08…

Scala相关知识学习总结5

1、多维数组 定义: val arr Array.ofDim[Double](3,4) 表示二维数组中有三个一维数组,每个一维数组有四个元素。 2、列表 List 不可变 List:默认不可变,可创建有序且可重复的列表,可使用:从右向左增加数据&#xf…

Day1:前端项目uni-app壁纸实战

uni-app官网下载HBuilder。 uni-app快速上手 | uni-app官网 点击HBuilder 安装 新建项目 工具——插件安装 安装uni-app(vue3) 我们先来准备一下: 先在wallpaper下新建目录 我已经建过了 同样,再在common下建images和style目录&…

光谱相机的光谱数据采集原理

光谱相机的光谱数据采集原理基于‌分光技术‌和‌光电信号转换‌,通过将入射光按波长分解并记录各波段的强度信息,最终生成包含空间和光谱维度的数据立方体。以下是详细原理分解: ‌1. 分光技术:将复合光分解为单色光‌ 光谱相机…

宏碁笔记本电脑擎7PRO搭载的 NVIDIA RTX 5080 显卡安装pytorch

宏碁笔记本电脑擎7PRO搭载的 NVIDIA RTX 5080 显卡是一款高性能移动 GPU,基于 NVIDIA 最新的 Blackwell 架构设计,通过修正架构(Blackwell)、显存类型与带宽(GDDR7、960GB/s)、Tensor Core 与 RT Core 全面…

html+css+js 实现一个贪吃蛇小游戏

目录 游戏简介 游戏功能与特点 如何玩转贪吃蛇 游戏设计与实现 HTML结构 JavaScript核心实现 代码结构: 效果 关于“其他游戏” 游戏简介 贪吃蛇是一款经典的单人小游戏,玩家通过控制蛇的移动,吃掉食物来增加长度,避免撞…

Python爬虫生成CSV文件的完整流程

引言 在当今数据驱动的时代,网络爬虫已成为获取互联网数据的重要工具。Python凭借其丰富的库生态系统和简洁的语法,成为了爬虫开发的首选语言。本文将详细介绍使用Python爬虫从网页抓取数据并生成CSV文件的完整流程,包括环境准备、网页请求、…

21.OpenCV获取图像轮廓信息

OpenCV获取图像轮廓信息 在计算机视觉领域,识别和分析图像中的对象形状是一项基本任务。OpenCV 库提供了一个强大的工具——轮廓检测(Contour Detection),它能够帮助我们精确地定位对象的边界。这篇博文将带你入门 OpenCV 的轮廓…

医学图像分割效率大幅提升!U-Net架构升级,助力精度提升5%!

在医学图像分割领域,U-Net模型及其变体的创新应用正在带来显著的性能提升和效率优化。最新研究显示,通过引入结构化状态空间模型(SSM)和轻量级LSTM(xLSTM)等技术,VMAXL-UNet模型在多个医学图像数…

智能设备运行监控系统

在工业 4.0 与智能制造浪潮下,设备运行效率与稳定性成为企业竞争力的核心要素。然而,传统设备管理模式面临数据采集分散、状态分析滞后、维护成本高昂等痛点。为破解这些难题,设备运行监控系统应运而生,通过融合智能传感、5G 通信…

服务器报错:xxx/libc.so.6: version `GLIBC_2.32‘ not found

/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found (required by ./aima-sim-app-main) 解决思路 根据错误信息,您的应用程序 aima-sim-app-main 和 libmujoco.so.3.1.6 库依赖于较新的 GNU C Library (glibc) 版本(如 GLIBC_2.32, GLIBC…

Flutter之页面布局一

目录: 1、页面布局一2、无状态组件StatelessWidget和有状态组件StatefulWidget2.1、无状态组件示例2.2、有状态组件示例2.3、在 widget 之间共享状态1、使用 widget 构造函数2、使用 InheritedWidget3、使用回调 3、布局小组件3.1、布置单个 Widget3.2、容器3.3、垂…

架构思维: 数据一致性的两种场景深度解读

文章目录 Pre案例数据一致性问题的两种场景第一种场景:实时数据不一致不要紧,保证数据最终一致性就行第二种场景:必须保证实时一致性 最终一致性方案实时一致性方案TCC 模式Seata 中 AT 模式的自动回滚一阶段二阶段-回滚二阶段-提交 Pre 架构…

大数据knox网关API

我们过去访问大数据组件,如sparkui,hdfs的页面,以及yarn上面看信息是很麻烦的一件事。要记每个端口号,比如50070,8090,8088,4007,如果换到另一个集群,不同版本&#xff0…

【Tauri2】015——前端的事件、方法和invoke函数

目录 前言 正文 准备 关键url 获取所有命令 切换主题set_theme 设置大小 获得版本version 名字name 监听窗口移动 前言 【Tauri2】005——tauri::command属性与invoke函数-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146581991?spm1001.2014.3001.…

密码学基础——分组密码的运行模式

前面的文章中文我们已经知道了分组密码是一种对称密钥密码体制,其工作原理可以概括为将明文消息分割成固定长度的分组,然后对每个分组分别进行加密处理。 下面介绍分组密码的运行模式 1.电码本模式(ECB) 2.密码分组链接模式&…

Python----计算机视觉处理(Opencv:道路检测完整版:透视变换,提取车道线,车道线拟合,车道线显示,)

Python----计算机视觉处理(Opencv:道路检测之道路透视变换) Python----计算机视觉处理(Opencv:道路检测之提取车道线) Python----计算机视觉处理(Opencv:道路检测之车道线拟合) Python----计算机视觉处理&#xff0…

基于飞桨框架3.0本地DeepSeek-R1蒸馏版部署实战

深度学习框架与大模型技术的融合正推动人工智能应用的新一轮变革。百度飞桨(PaddlePaddle)作为国内首个自主研发、开源开放的深度学习平台,近期推出的3.0版本针对大模型时代的开发痛点进行了系统性革新。其核心创新包括“动静统一自动并行”&…