博客vue报错版本依赖问题解决
# 报错信息如下
(undefined) assets/js/styles.2357ed77.js from Terser
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:79:19)
at Object.createHash (node:crypto:139:10)
at D:\zpj\blog\node_modules\terser-webpack-plugin\dist\index.js:217:37
at Array.forEach (<anonymous>)
at TerserPlugin.optimizeFn (D:\zpj\blog\node_modules\terser-webpack-plugin\d
ist\index.js:160:259)
at _next0 (eval at create (D:\zpj\blog\node_modules\tapable\lib\HookCodeFact
ory.js:33:10), <anonymous>:13:1)
at eval (eval at create (D:\zpj\blog\node_modules\tapable\lib\HookCodeFactor
y.js:33:10), <anonymous>:30:1)
(undefined) assets/js/1.09d67b9a.js from Terser
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:79:19)
at Object.createHash (node:crypto:139:10)
at D:\zpj\blog\node_modules\terser-webpack-plugin\dist\index.js:217:37
at Array.forEach (<anonymous>)
at TerserPlugin.optimizeFn (D:\zpj\blog\node_modules\terser-webpack-plugin\d
ist\index.js:160:259)
at _next0 (eval at create (D:\zpj\blog\node_modules\tapable\lib\HookCodeFact
ory.js:33:10), <anonymous>:13:1)
at eval (eval at create (D:\zpj\blog\node_modules\tapable\lib\HookCodeFactor
y.js:33:10), <anonymous>:30:1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 报错原因
出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.
在node.js V17以前一些可以正常运行的的应用程序,但是在 V17 版本可能会抛出这个异常
# 解决方案
# 1、版本降级,解决报错
尝试卸载Node.js 17+版本并重新安装Node.js 16+版本,然后再重新启动
这个方法,测试有效,但我推荐的是第二个办法。
# 2、设置参数,解决报错
在执行运行项目命令之前,先运行这个命令:
Linux & Mac OS:
export NODE_OPTIONS=--openssl-legacy-provider
1
2
2
windows命令提示符:
set NODE_OPTIONS=--openssl-legacy-provider
1
2
2
这样就可以解决了,亲测有效。
唯一不足,是每次启动项目都要运行,所以,我们可以把它配置一下。也就是第三种方法。
# 3、 修改配置文件,解决报错(推荐)
根据你的系统类型,选择一个上面的命令,如,我是Mac系统,我就用:
export NODE_OPTIONS=--openssl-legacy-provider
1
2
2
然后,找到项目的package.json
文件,把自己对应的命令,加上&&
,写到启动项目的配置里面(构建写不写都可以),即可。
- 例1:脚手架
"scripts": {
"serve": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
},
1
2
3
4
5
2
3
4
5
- 例2:Vue-Element-Admin
"scripts": {
"dev": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
//略...
},
1
2
3
4
5
2
3
4
5
上次更新: 2024/06/05, 16:23:38