vuepress报错error0308010c

whfox

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.):

1
export NODE_OPTIONS=--openssl-legacy-provider

On Windows command prompt:

1
set NODE_OPTIONS=--openssl-legacy-provider

On PowerShell:

1
$env:NODE_OPTIONS = "--openssl-legacy-provider"

nodejs降版本至16

安装命令

1
nvm install 16.16.0

使用命令

1
nvm use 16.16.0

成功之后就可以查看本地的node版本了

1
node -v

修改package.json

修改vuepress项目文件夹下的package.json,在构建命令之前加入SET NODE_OPTIONS=–openssl-legacy-provider

1
2
3
4
5
"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"
},