系统重装成 win11, node.js 也安装成了最新的 v18.13.0 , 修改基于laravel 的 lims 系统,想重新编译,然后报错 error:0308010C:digital envelope routines::unsupported:
e:\e-lims> npm run watch
> watch
> mix watch
......
node:internal/crypto/hash:71
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
......
Node.js v18.13.0
出现这个错误的原因,是 node.js V17版本后使用了OpenSSL3.0, OpenSSL3.0对允许算法和密钥大小增加了严格的限制,改变了md族(包括md4)的初始化上下文的代码,这是一个破坏性的更改。
解决的方案之一是修改 package.json 中的相关脚本
原部分脚本为:
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"prod": "npm run production",
"production": "mix --production"
},
......
}
启动脚本前,设置NODE_OPTIONS,这不是一个推荐的方法,但可以解决问题文章来源:https://www.toymoban.com/news/detail-602126.html
{
"private": true,
"scripts": {
"dev": "set NODE_OPTIONS=--openssl-legacy-provider && npm run development",
"watch": "set NODE_OPTIONS=--openssl-legacy-provider && mix watch",
},
......
}
再次运行 npm run watch ,可顺利编译。文章来源地址https://www.toymoban.com/news/detail-602126.html
到了这里,关于升级 node.js 后,编译时报错error:0308010C:digital envelope routines::unsupported的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!