Error: error:0308010C:digital envelope routines::unsupported
# 环境
Node.js: v18.12.1
npm: 8.19.2
# 查完资料原因如下:
node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。
# 有以下三种解决方法
# Enable legacy OpenSSL provider.
On Unix-like (Linux, macOS, Git bash, etc.):
export NODE_OPTIONS=--openssl-legacy-provider
1
On Windows command prompt:
set NODE_OPTIONS=--openssl-legacy-provider
1
On PowerShell:
$env:NODE_OPTIONS = "--openssl-legacy-provider"
1
# nodejs降版本至16
安装命令
nvm install 16.16.0
1
使用命令
nvm use 16.16.0
1
成功之后就可以查看本地的node版本了
node -v
1
# 修改package.json
修改vuepress项目文件夹下的package.json,在构建命令之前加入SET NODE_OPTIONS=--openssl-legacy-provider
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"docs:dev": "set NODE_OPTIONS=\"--openssl-legacy-provider\" & vuepress dev docs",
"docs:build": "set NODE_OPTIONS=\"--openssl-legacy-provider\" & vuepress build docs"
},
1
2
3
4
5
2
3
4
5