You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Webpack遇ERR_OSSL_EVP_UNSUPPORTED错误:原因及配置解决

Node.js SSL错误排查与配置解决方案

原本通过npm run watch能正常启动本地应用,几天后突然出现两个SSL相关错误:

  • error:03000086:digital envelope routines::initialization error
  • ERR_OSSL_EVP_UNSUPPORTED

已通过执行命令set NODE_OPTIONS=--openssl-legacy-provider && npm run watch解决问题,但存在两个疑问,以下是针对性解答:

疑问1:未升级Node.js v18.14.0,为何突然触发SSL错误?

  • 系统或安全工具静默更新:公司办公电脑的Windows系统可能推送了SSL/TLS配置更新(比如启用更严格的加密套件),或者终端安全软件强制修改了加密策略,禁用了Node.js默认依赖的旧版加密算法。
  • 项目依赖自动更新:虽然你没升级Node.js,但项目的依赖包(比如Webpack或其插件)可能通过自动更新机制(如npm install时的小版本升级)引入了新版本,这些版本调整了加密逻辑,和当前Node.js版本的默认配置不兼容。
  • 公司网络环境变更:代理服务器、防火墙的SSL策略更新,要求使用更安全的加密方式,导致本地应用的旧加密逻辑无法适配。
  • 浏览器升级不背锅:Chrome升级只影响前端页面的SSL验证,和Node.js端启动时的SSL错误无关,可以排除这个因素。

疑问2:如何在package.json的scripts中正确配置NODE_OPTIONS,避免NODE_ENV变为undefined?

直接在scripts里添加NODE_OPTIONS=--openssl-legacy-provider会覆盖原有环境变量,导致NODE_ENV丢失,针对Windows环境或跨平台场景,有两种解决方案:

方案1:Windows专属写法

显式同时设置两个环境变量,修改package.json的scripts字段:

{
  "scripts": {
    "watch": "set NODE_OPTIONS=--openssl-legacy-provider && set NODE_ENV=development && webpack --watch"
  }
}

通过set命令分别指定NODE_OPTIONS和NODE_ENV,确保两个变量都能被正确读取。

方案2:跨平台兼容写法(推荐)

使用cross-env包统一环境变量设置,解决Windows和类Unix系统的语法差异:

  1. 先安装依赖:
npm install cross-env --save-dev
  1. 修改scripts配置:
{
  "scripts": {
    "watch": "cross-env NODE_OPTIONS=--openssl-legacy-provider NODE_ENV=development webpack --watch"
  }
}

这种写法能在所有系统下正常工作,且不会丢失原有环境变量。

内容的提问来源于stack exchange,提问作者Siri How

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:53:18