少女祈祷中...

Error: error:0308010C:digital envelope routines::unsupported

经过

今天我想测试以下我写的项目编译后怎么样,没想到发生了报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ERROR  Failed to compile with 1 errors                                                                                                                           00:35:54

error

background.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 /home/user/user/item/node_modules/vue-cli-plugin-electron-builder/node_modules/webpack/node_modules/terser-webpack-plugin/dist/index.js:217:37
at Array.forEach (<anonymous>)
at TerserPlugin.optimizeFn (/home/user/user/musicplayer/node_modules/vue-cli-plugin-electron-builder/node_modules/webpack/node_modules/terser-webpack-plugin/dist/index.js:160:259)
at _next0 (eval at create (/home/user/user/item/node_modules/vue-cli-plugin-electron-builder/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:8:1)
at eval (eval at create (/home/item/item/item/node_modules/vue-cli-plugin-electron-builder/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:23:1)
at processTicksAndRejections (node:internal/process/task_queues:95:5)

/home/user/user/item/node_modules/vue-cli-plugin-electron-builder/index.js:198
throw new Error('Build failed with errors.')

问题原因

这个错误信息表明在使用 TerserWebpackPlugin(Webpack 的一个优化插件,用于压缩 JavaScript 代码)时出现了问题。其中报错中说明了 digital envelope routines::unsupported,这通常与 Node.js 使用的加密算法有关,在更新到 Node.js v10.17.0 之后的一个版本中,某些 OpenSSL 库的功能被弃用。

通过查找最终找到了这篇问题反馈:连接

只需要输入 export NODE_OPTIONS=--openssl-legacy-provider启用旧版 OpenSSL。 就可以了

解决办法

Linux、macOS:

1
export NODE_OPTIONS=--openssl-legacy-provider

Windows:

1
set NODE_OPTIONS=--openssl-legacy-provider

PowerShell

1
$env:NODE_OPTIONS = "--openssl-legacy-provider"

参考