【问题解决】npm nodejs编译报错问题Error: error:0308010C:digital envelope routines::unsupported

文章讲述了在开发过程中遇到的TerserWebpackPlugin错误,涉及Node.js的crypto模块不支持新的Hash方法。解决方法是在Mac/Linux系统中设置NODE_OPTIONS为--openssl-legacy-provider,而在Windows系统中设置为同样的选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js/app.185a3b28.js from Terser
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:68:19)
at Object.createHash (node:crypto:138:10)
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\terser-webpack-plugin\dist\index.js:217:37
at Array.forEach ()
at TerserPlugin.optimizeFn (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\terser-webpack-plugin\dist\index.js:160:259)
at AsyncSeriesHook.eval [as callAsync] (eval at create (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\HookCodeFactory.js:33:10), :7:1)
at AsyncSeriesHook.lazyCompileHook (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\Hook.js:154:20)
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compilation.js:1409:36
at AsyncSeriesHook.eval [as callAsync] (eval at create (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\HookCodeFactory.js:33:10), :6:1)
at AsyncSeriesHook.lazyCompileHook (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\Hook.js:154:20)
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compilation.js:1405:32
at AsyncSeriesHook.eval [as callAsync] (eval at create (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\HookCodeFactory.js:33:10), :6:1)
at AsyncSeriesHook.lazyCompileHook (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\Hook.js:154:20)
at Compilation.seal (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compilation.js:1342:27)
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compiler.js:675:18
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compilation.js:1261:4
at AsyncSeriesHook.eval [as callAsync] (eval at create (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\HookCodeFactory.js:33:10), :24:1)
at AsyncSeriesHook.lazyCompileHook (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\Hook.js:154:20)
at Compilation.finish (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compilation.js:1253:28)
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compiler.js:672:17
at _done (eval at create (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\HookCodeFactory.js:33:10), :9:1)
at eval (eval at create (G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\tapable\lib\HookCodeFactory.js:33:10), :32:22)
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compilation.js:1185:12
at G:\work\media\sms\ZLM_UI\MediaServerUI\node_modules\webpack\lib\Compilation.js:1097:9
at process.processTicksAndRejections (node:internal/process/task_queues:77:11)
在这里插入图片描述

解决:
Mac/linux:
export NODE_OPTIONS=–openssl-legacy-provider
Windows:
set NODE_OPTIONS=–openssl-legacy-provider

VS Code 中执行 `npm run dev` 命令报 `Error: error:0308010C:digital envelope routines::unsupported` 错误通常与 Node.js 或 OpenSSL 安装有关。这个错误通常是由于尝试使用加密功能(如 SSL/TLS),但当前环境中缺少必要的 OpenSSL 库或者版本不兼容导致的。 以下是几个可能的解决方案: 1. **检查 OpenSSL 安装**:确保你的系统上安装了 OpenSSL,并且版本足够新。你可以通过运行 `openssl version` 来查看。如果缺失,你可以从官方网站下载并安装最新版本。 2. **更新 Node.js**:确保 Node.jsnpm 版本是最新的。有时候旧版本的 Node.js 会存在与 OpenSSL 不兼容的问题。可以通过 `node -v` 和 `npm -v` 检查版本,如有必要,访问 https://nodejs.org/ 下载并安装最新版本。 3. **修改环境变量**:如果安装了多个版本的 OpenSSL 或者不同版本的 Node.js,可能需要配置环境变量以确保正确的版本被找到。具体操作取决于你的操作系统(Windows, macOS, Linux)。 4. **锁定依赖**:如果是因为项目中某个依赖库的版本问题导致的,试着在 package.json 中将该库的版本锁定到已知兼容的版本。 5. **重新安装依赖**:在命令行中尝试 `npm install --force` 或 `npm ci` 来强制安装缺失的依赖。 如果以上步骤都无法解决问题,建议提供更多的上下文信息,比如错误详细日志或是在尝试什么特定功能时出现的错误,以便更准确地定位问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废人一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值