1、含义解析
- openssl,open secure socket layer,即开源的安全套接字层,一个提供加密功能的库
- legacy,(计算机系统或产品)已停产的
- provider,提供者
所以,--openssl-legacy-provider 意思就是安全套接字层的旧版实现
2、背景
Node.js v17版本中包含了 OpenSSL 3.0,在3.0版本中 md4不再被允许使用,在node 17版本之前使用 md4方法不会报错,但 v17之后将抛出一个 error code 为 ERR_OSSL_EVP_UNSUPPORTED 的错误信息。
3、使用
所以在node升级高版本后,为了代码的兼容,可以增加 --openssl-legacy-provider 标志,用法就是
node --openssl-legacy-provider xx.js,就是告诉nodejs,别使用OpenSSL 3.0,还使用老版的 OpenSSL,工程化的项目一般放到script里, 类似于
注:上图意为将nodejs中的环境变量 NODE_OPTIONS设置为--openssl-legacy-provider (变量设置在当前终端生效)