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

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A4 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄4 天前
JavaScript 隐式全局变量解析
javascript
honkun64 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19914 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net