Vue Node 编译报错:digital envelope routines::unsupported
错误内容
Error: error:0308010C:digital envelope routines::unsupportedat 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
,如下所示:
"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)