Vue项目启动报错:error:0308010C

报错内容:95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported
解决方案 : export NODE_OPTIONS=--openssl-legacy-provider

### CompressionPlugin 错误 `error:0308010C:digital envelope routines::unsupported` 的解决方案 在 Node.js 版本升级到 17 或更高版本之后,可能会遇到类似于 `error:0308010C:digital envelope routines::unsupported` 的错误。这种错误通常与 OpenSSL 库的变化有关,在新版本中默认禁用了某些旧版算法。 以下是针对该问题的具体解决方法: #### 方法一:通过命令行参数启用 legacy provider 可以通过设置环境变量或启动脚本来强制启用 OpenSSL 的 legacy 提供程序。这种方法适用于大多数场景,并且不需要修改全局配置文件。 在项目的 `package.json` 文件中的 `scripts` 部分添加以下内容: ```json { "scripts": { "start": "react-scripts --openssl-legacy-provider start" } } ``` 上述代码片段会告诉 React 脚本使用 OpenSSL 的 legacy provider 来兼容旧版加密算法[^2]。 如果项目不是基于 React,则可以在运行 Node.js 命令时手动传递选项: ```bash node --openssl-legacy-provider your-script.js ``` --- #### 方法二:更新依赖库以支持最新标准 另一种可能的解决方案是检查并更新项目中使用的第三方库(例如 Webpack 和其插件)。确保这些库已经适配了最新的 Node.js 和 OpenSSL 标准。 对于 `CompressionPlugin`,可以尝试将其替换为更现代的替代品,或者升级至最新版本。例如,安装最新版本的 `compression-webpack-plugin` 并调整配置: ```javascript const CompressionPlugin = require('compression-webpack-plugin'); module.exports = { plugins: [ new CompressionPlugin({ algorithm: 'gzip', // 使用 gzip 替代其他可能导致冲突的压缩方式 }), ], }; ``` 这样做的目的是避免因过时的加密实现而导致的兼容性问题。 --- #### 方法三:降级 Node.js 版本 如果不希望更改现有代码或配置,可以选择暂时回退到较低版本的 Node.js(如 v16.x),因为低版本仍然保留对传统加密算法的支持。然而,这并不是长期推荐的做法,因为它可能带来安全风险和其他潜在问题。 要切换 Node.js 版本,可以借助工具如 nvm (Node Version Manager) 完成操作: ```bash nvm install 16 nvm use 16 ``` --- #### 总结 最优先推荐的方法是一和二,它们能够在保持安全性的同时解决当前问题。而第三种方法仅作为临时措施存在,应谨慎考虑。 ```python print("成功解决了 error:0308010C 数字信封例程不受支持的问题") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值