Lazy loaded image
技术分享
Lazy loaded imagenodejs新版本引起的:digital envelope routines::unsupported
字数 656阅读时长 2 分钟
2023-8-12
2026-7-4
😀
这里写文章的前言: 一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
 

📝 主旨内容

起因

引用的话语
由于电脑重装系统,重新下载nodejs,自然更新到最新版本18,之前的版本才16。更新到最新nodejs版本后,运行vue文件,报错:
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported

探索

引用的话语
常规操作,上网查原因:
node.js 的版本问题
因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。

🤗 解决

总结文章的内容
1.推荐:修改package.json,在相关构建命令之前加入SET NODE_OPTIONS=--openssl-legacy-provider
这种可以一劳永逸,以后直接通过npm执行scripts里面的命令即可。不管是项目迭代,还是团队开发,这种都比较有效。
2.当次运行的命令窗口有效:在你当前文件的cmd命令窗口输入:SET NODE_OPTIONS=--openssl-legacy-provider, 回车后输入 npm运行命令
notion image
这种做法,就是每次运行都要输入SET NODE_OPTIONS=--openssl-legacy-provider,来告诉nodejs,别使用最新的SSL3.0,还是使用以前旧版本的。
3.就是nodejs版本回退到16版本,这样就可以直接运行了。

📎 最后补充一点

关于:SET NODE_OPTIONS=--openssl-legacy-provider,其实这种方法不能一劳永逸,它的legacy的中文意思翻译过来是经典的,传统的,对于目前2022年12月4号来说,openssl3.0是最新的,之前的版本属于legacy版本,但是随着时间的推移,
未来可能在2024年,openssl3.0可能也变成了legacy版本,此时再设置SET NODE_OPTIONS=--openssl-legacy-provider,来通知nodejs使用传统的openSSL来执行,那么可能就会运行错误。那么对于产品的迭代维护来说,最好的话,还是使用旧版本的nodejs,比如16版本的,这个才可能是解决问题的关键。
 
💡
有任何问题,欢迎您在底部评论区留言,一起交流~
上一篇
群辉使用群晖chat对接青龙面板和nastool等消息通知
下一篇
小米手机收不到Telegram验证码的解决方法

评论
Loading...