vuepress报错error0308010c

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

Buy me a cup of coffee ☕.