为什么运行时要加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,就可以不再依赖这个开关。

相关推荐
想吃火锅10057 分钟前
【leetcode】20.有效的括号js
linux·javascript·leetcode
问心无愧05139 分钟前
ctfshow web入门114
android·前端·笔记
aaaa954726659 分钟前
终端与IDE形态Vibe Coding实测:主流AI编程工具迁移与迭代对比
javascript·react.js·ecmascript
晓得迷路了13 分钟前
栗子前端技术周刊第 133 期 - Angular v22、React 编译器 Rust 版、pnpm 11.5...
前端·javascript·css
一个被程序员耽误的厨师15 分钟前
02-架构篇-前端怎么反客为主把AI编排权拿回到自己手里
前端·人工智能·架构
云浪19 分钟前
别再让用户干等了:用 Express + SSE 实现《红楼梦》AI 问答实时输出
javascript·后端·node.js
羊羊小栈22 分钟前
基于混合检索RAG的食品生产质量问答系统(BGE_BM25_大语言模型)
前端·人工智能·语言模型·自然语言处理·毕业设计·大作业
烤代码的吐司君23 分钟前
Redis 服务配置与使用
前端·bootstrap·html
之歆26 分钟前
Ajax 基础技术深度解析:XHR 从入门到跨域
前端·ajax·okhttp
怕浪猫27 分钟前
Electron 开发实战(十四):实战项目|从零搭建轻量化桌面代码编辑器
前端·electron·node.js