为什么运行时要加set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve

为什么要加 NODE_OPTIONS=--openssl-legacy-provider?

这不是 Vue 或 vue-cli-service 自己的参数,而是 传给 Node.js 的启动选项。

  1. Node 17 起内置 OpenSSL 3.0

    和 OpenSSL 1.x 相比,3.0 默认关掉了一些旧算法(例如 Webpack 4 用来做模块标识/哈希时可能用到的 MD4 等)。

  2. 你这套栈还是 Webpack 4(Vue CLI 4)

    构建和开发服务器在跑 Webpack 时,会走到这些旧加密接口,在 OpenSSL 3.0 下就会报:
    error:0308010C:digital envelope routines::unsupported。

  3. --openssl-legacy-provider 的作用

    让 Node 再加载 旧版算法提供程序 ,这样 Webpack 4 还能像以前一样用那些哈希/摘要,构建和 serve 才能正常跑完。

  4. 为什么要写在 NODE_OPTIONS 里?
    vue-cli-service serve 本质是 用 Node 去执行脚本 。把选项放在环境变量 NODE_OPTIONS 里,等于 每次启动 Node 都带上这个参数,不用改 Node 安装目录或全局配置。

  5. set ... && 是 Windows cmd 的写法

    只在当前 cmd 会话里设置环境变量,再执行后面的命令。PowerShell 要用 $env:NODE_OPTIONS=...,跨平台更稳妥的是用 cross-env(你项目里脚本已经可以这样写)。


总结: 加这一行不是为了"运行时特殊功能",而是为了 在较新的 Node 上兼容旧的 Webpack 4 加密用法 。长期做法是升级 Vue CLI 5 / Webpack 5,就可以不再依赖这个开关。

相关推荐
Autumn_ing19 小时前
Design.md生成UI怎么验收?举例运营后台的颜色、状态和数据核对
前端·ui·ai·设计系统·paico·ai生成ui·design.md
远离UE420 小时前
UE5 Substrate Thin Film 源码拆析
开发语言·javascript·ue5
keyipatience20 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
朱涛的自习室20 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
java1234_小锋1 天前
【技术专题】HTML5 网页技术 - HTML5简介 & HTML5 文档结构
前端·html·html5
鶴哥只手遮天1 天前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 1 章 项目全景:monorepo 架构与工程化体系
前端·vue.js·开源
流星。。方1 天前
小团队官网SEO落地:前端语义化与静态生成的工程实践
前端·状态模式
用户530429765791 天前
盘点危化品搬运诊断的6类工具与自处理边界判断
前端
curtain1 天前
从古法编程到 Agent:我入行这两年,AI 改变了什么
前端·openai
zyfts1 天前
10分钟自制Codex钉钉通知Skill:AI干完活自动钉钉提醒你
前端