如何全局设置NODE_OPTIONS=--openssl-legacy-provider避免重复配置?
Node.js v18.16.1 + Vue 脚本 ERR_OSSL_EVP_UNSUPPORTED 全局及长期解决方案
一、全局配置方案(无需每次添加前缀)
Windows 系统
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」区域点击「新建」:
- 变量名:
NODE_OPTIONS - 变量值:
--openssl-legacy-provider
- 变量名:
- 依次点击「确定」保存配置,重启所有终端窗口后生效,后续所有Node进程会自动加载该参数。
Linux/macOS 系统
根据你使用的Shell类型配置:
- Bash:编辑
~/.bashrc或~/.bash_profile文件,添加一行:
保存后执行export NODE_OPTIONS="--openssl-legacy-provider"source ~/.bashrc(或对应文件)使配置立即生效。 - Zsh:编辑
~/.zshrc文件,添加上述相同的export语句,执行source ~/.zshrc生效。
二、长期解决办法(从根源适配Node.js 18+)
临时启用legacy provider只是兼容方案,长期建议从以下方向优化:
- 升级项目核心依赖:
检查并升级vue-cli-service、webpack、@vue/cli等依赖到最新稳定版。比如Vue CLI 5.x及以上版本已适配Node.js 16/18的OpenSSL 3.0要求,执行npm update或手动修改package.json版本号后重新安装依赖。 - 调整Webpack配置:
如果项目使用自定义Webpack配置,升级TerserPlugin、CssMinimizerPlugin等压缩插件到最新版,确保它们使用的加密算法兼容OpenSSL 3.0。若需手动配置,可在Webpack配置文件的optimization.minimizer中调整插件参数,避免使用已废弃的算法。 - 检查自定义加密代码:
若项目中有直接调用Node.jscrypto模块的自定义加密逻辑,替换为OpenSSL 3.0支持的API和算法,移除已废弃的接口调用。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

