解决启动Vue项目时遇到的 error:0308010C:digital envelope routines::unsupported 错误

ops/2025/3/17 3:43:38/

问题描述

最近,在启动一个遗留前端(Vue)项目时,遇到了error:0308010C:digital envelope routines::unsupported错误。

95% emitting CompressionPlugin ERROR  Error: error:0308010C:digital envelope routines::unsupported
Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:79:19)at Object.createHash (node:crypto:139:10)at D:\code\front\shucheng-admin-ui\node_modules\compression-webpack-plugin\dist\index.js:243:42    at CompressionPlugin.compress (D:\code\front\shucheng-admin-ui\node_modules\compression-webpack-plugin\dist\index.js:284:9)at D:\code\front\shucheng-admin-ui\node_modules\compression-webpack-plugin\dist\index.js:305:12    at _next1 (eval at create (D:\code\front\shucheng-admin-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:14:17)at eval (eval at create (D:\code\front\shucheng-admin-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:33:1)at D:\code\front\shucheng-admin-ui\node_modules\copy-webpack-plugin\dist\index.js:91:9

这是因为Node.js v17 及以上版本默认使用 OpenSSL 3.x,而 OpenSSL 3.x 移除了对一些旧加密算法的支持。因此,依赖这些旧算法的模块(如CompressionPlugin)在运行时可能会抛出 error:0308010C:digital envelope routines::unsupported 错误。

解决方案(TL;DR)

方案一:使用 OpenSSL 旧版提供程序

通过在启动命令中设置 NODE_OPTIONS=--openssl-legacy-provider,强制 Node.js 使用旧版的 OpenSSL 提供程序,从而支持被移除的旧算法。

具体操作
Windows 系统:

"scripts": {"dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve","build:prod": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build","build:stage": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode staging"
}

Unix/Linux/Mac 系统:

"scripts": {"dev": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve","build:prod": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build","build:stage": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build --mode staging"
}

方案二:降级 Node.js 版本

如果您不需要 Node.js v17 及以上版本的新功能,可以考虑降级到 Node.js v16 或更早的版本。这些版本默认使用 OpenSSL 1.x,通常不会遇到该问题。

方案三:更新相关依赖

检查是否有更新版本的 CompressionPlugin 或其他依赖库,新版本可能已经兼容 OpenSSL 3.x。


http://www.ppmy.cn/ops/166387.html

相关文章

手势调控屏幕亮度:Python + OpenCV + Mediapipe 打造智能交互体验

前言 你有没有遇到过这样的情况? 夜晚玩电脑,屏幕亮得像个小太阳,晃得眼泪直流,想调暗一点,却在键盘上盲摸半天,结果误触关机键,直接黑屏;白天屏幕暗得像熄火的煤油灯,想调亮点,鼠标点来点去,调节条藏得像猫一样不见踪影。这年头,我们的设备都快能听懂人话了,怎…

系统分析师论文《论系统运维方法及其应用》

【摘要】 2022年4月&#xff0c;我公司承接了某大型国有企业"智能办公自动化系统"的运维优化项目&#xff0c;我担任系统分析师并负责运维体系建设工作。该系统涉及流程审批、数据报表、移动端接入等核心功能模块&#xff0c;支撑1300余名员工的日常办公。由于历史遗…

golang开发支持onlyoffice的token功能

一直都没去弄token这块&#xff0c;想着反正docker run的时候将jwt置为false即可。 看了好多文章&#xff0c;感觉可以试试&#xff0c;但是所有文件几乎都没说思路。 根据我的理解和成功的调试&#xff0c;思路是&#xff1a; 我们先定义2个概念&#xff0c;一个是文档下载…

vscode编译器的一些使用问题

目录 解决pip不可用问题 检查VSCode的终端配置 解决pip不可用问题 eg&#xff1a; C:\Users\student>pip pip 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 先找到系统环境变量 高级->环境变量 系统属性->Path 变量名随意&#xff0c;自己后续知道…

【设计模式】从事件驱动到即时更新:掌握观察者模式的核心技巧

概述 定义&#xff1a;又被称为发布-订阅&#xff08;Publish/Subscribe&#xff09;模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时&#xff0c;会通知所有的观察者对象&#xff0c;使他们能够…

水雷探测用水下航行器侧扫声纳成像数据之论文阅读

摘要 在过去的十年中&#xff0c;无人驾驶车辆在水下领域变得越来越普及&#xff0c;因为它们通过减少人类参与来提高操作可靠性。在水下操作时&#xff0c;环境感知对于安全以及导航和轨迹控制等任务至关重要。水雷探测是最危险的操作之一&#xff0c;因为这些系统可能会损坏…

单元测试知识总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是单元测试&#xff1f; 单元测试是指&#xff0c;对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作&#xff0c;这里的…

4.3 数组和集合的初始及赋值

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商…