错误内容
bash
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:130:10)
错误原因
因为 nodeJs v17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错误。例如我升级 Node 为 v18 后出现了这个错误。
解决方法
修改 package.json ,在 script 脚本的前面添加配置 NODE_OPTIONS=--openssl-legacy-provider
,如下所示:
json
"scripts": {
"start": "cross-env NODE_OPTIONS=--openssl-legacy-provider docusaurus start",
"build": "cross-env NODE_OPTIONS=--openssl-legacy-provider docusaurus build --out-dir=dist"
},
"devDependencies": {
"cross-env": "^7.0.3",
}
NODE_OPTIONS=--openssl-legacy-provider 后面是原来的命令内容,这里只添加了
cross-env NODE_OPTIONS=--openssl-legacy-provider
。
使用 cross-env
的原因是因为这样我们可以避免 Windows、Linux、MacOS
等不同平台使用不同命令的问题。注意不要忘记在 devDependencies
中添加 cross-env
依赖。
(END)