在使用Node.js
时,如果版本过高,特别是Node.js 17
及以上版本,会出现vue-cli
项目运行报错的问题。这是因为Node.js 17
引入了OpenSSL 3.0
,该版本不再支持md4
算法,而在此之前,Node.js
中的md4
方法是可以正常使用的。在Node.js 17
及更高版本中,如果继续使用md4
,会抛出错误代码ERR_OSSL_EVP_UNSUPPORTED
。
在启动项目之前,运行以下配置命令:
set NODE_OPTIONS=--openssl-legacy-provider
此命令的作用是告诉Node.js
使用旧版的OpenSSL
库,避免使用OpenSSL 3.0
,从而规避错误的发生。
package.json
配置通过修改package.json
文件,可以将上述命令直接添加到项目的启动脚本中。具体配置如下:
"dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --open",
"build:prod": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --report",
"build:stage": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode staging",
"preview": "set NODE_OPTIONS=--openssl-legacy-provider && node build/index.js --preview",
这样,每次启动或打包项目时,都会自动使用旧版OpenSSL
。
Node.js
版本如果以上两种方法不适用,还可以将Node.js
降级到16版本或更低版本。Node.js 16
及以下版本不包含OpenSSL 3.0
,因此不会出现md4
不支持的问题,项目也可以正常运行。
powered by kaifamiao