当前位置: 首页 > news >正文

FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) { open

报错信息:FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'

错误核心原因

该报错是Node.js 版本过高(v17+)与 OpenSSL 3.0 兼容性问题:Node.js v17 及以上版本将 OpenSSL 升级到 3.0,废弃了 MD5、SHA1 等旧加密算法,而若依前端(ruoyi-ui)依赖的 Webpack/Vue-CLI 等构建工具仍使用这些算法,导致加密初始化失败(digital envelope routines::initialization error)。

二、若依前端(ruoyi-ui)针对性解决方法

方法 1:临时解决(快速生效,无需改 Node 版本)

通过添加环境变量兼容旧加密算法,修改若依前端的启动 / 打包脚本,适配不同系统:

步骤 1:定位若依前端脚本文件

打开ruoyi-ui/package.json,找到scripts节点(包含dev/build:prod等脚本):

json

"scripts": { "dev": "vue-cli-service serve", "build:prod": "vue-cli-service build", "lint": "eslint --ext .js,.vue src" }
步骤 2:修改脚本(按系统适配)
  • Windows 系统(cmd/powershell):在脚本前添加set NODE_OPTIONS=--openssl-legacy-provider &&

    "scripts": { "dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", "build:prod": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build", "lint": "eslint --ext .js,.vue src" }
  • Linux/macOS 系统:在脚本前添加export NODE_OPTIONS=--openssl-legacy-provider &&

    "scripts": { "dev": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", "build:prod": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build", "lint": "eslint --ext .js,.vue src" }
步骤 3:重启前端服务

删除ruoyi-ui/node_modules/.cache缓存文件夹,重新执行:

bash

运行

npm run dev

此时前端可正常启动,无加密算法报错。

方法 2:永久解决(推荐,适配 Node LTS 版本)

降级 Node.js 到v16.x(LTS 长期支持版)(若依前端对该版本兼容性最佳):

  1. 卸载当前高版本 Node.js(如 v17/v18/v19);
  2. 下载 Node.js v16.x 安装包:官网地址:https://nodejs.org/dist/latest-v16.x/(选择对应系统版本);
  3. 安装后验证版本:
    node -v # 显示 v16.xx.xx 即为成功
  4. 重新安装若依前端依赖(可选):
    cd ruoyi-ui rm -rf node_modules package-lock.json # 清空旧依赖 npm install # 重新安装依赖 npm run dev # 启动前端,无需修改脚本
方法 3:补充(若用 nvm 管理 Node 版本,更便捷)

若安装了 nvm(Node 版本管理器),可一键切换版本:

# 安装v16.20.2(最新LTS) nvm install 16.20.2 # 切换到v16版本 nvm use 16.20.2 # 验证版本 node -v

三、关键注意事项

  1. 若依前端的node-sass依赖对 Node 版本敏感,v16.x 可完美兼容node-sass@4.14.x(若依默认版本);
  2. 避免使用 Node.js v17+ 运行若依前端,除非全部依赖升级到支持 OpenSSL 3.0 的版本(成本高,不推荐);
  3. 修改package.json脚本后,若仍报错,需清空node_modulespackage-lock.json重新安装依赖。

四、验证效果

修改后执行npm run dev,若终端显示:

App running at: - Local: http://localhost:80/index.html - Network: http://192.168.x.x:80/index.html

且无ERR_OSSL_EVP_UNSUPPORTED报错,说明解决成功。

http://www.jsqmd.com/news/109444/

相关文章:

  • Mac百度网盘加速工具:解锁高速下载权限终极指南
  • 高效搭建本地DNS服务:MosDNS实用部署完整指南
  • 零基础如何备战MCP量子认证?,30天刷完这7套模拟题稳过
  • 适合老年人吃的饼干选哪家?我给家里长辈常备的答案:爱至尊低GI五黑饼干 - AIEO
  • 零样本目标检测实战指南:用语言指令解锁图像理解新维度
  • 第5章_填充规则与高级特性
  • 现在做技术的未来的方向 - ukyo-
  • 第6章_实际应用案例与最佳实践
  • Ultralytics YOLO实战性能优化:从基础配置到企业级部署
  • 【读书笔记】《论扯淡》
  • HTMLMinifier:前端性能优化的终极压缩利器
  • 2025年11月UV解胶机生产厂家深度评测 - 2025年品牌推荐榜
  • 终极流体力学AI革命:DeepCFD快速模拟完整指南
  • 【AI Agent文档生成部署全攻略】:掌握高效自动化文档输出的5大核心技术
  • v-code-diff终极指南:Vue项目代码对比解决方案
  • AI赋能靶向蛋白降解:革新药物发现的新引擎
  • 二维码修复终极指南:从原理到实战的完整教程
  • 百度网盘直链解析:突破限速壁垒的高效下载方案
  • Apollo Save Tool:重新定义游戏存档管理的终极解决方案
  • 开源社区如何通过协作创新机制驱动项目持续进化?
  • 打破技术壁垒:国产架构下大模型训练与微调,让自主 AI 触手可及
  • 多显示器用户必看:5个理由让你的窗口永远记住位置
  • 零成本搭建专业工单系统:osTicket完整部署指南
  • Kotaemon移民安置信息服务AI代理
  • EspoCRM前端架构深度解析:现代企业级应用开发实践
  • 5步搭建企业级WebRTC视频会议系统:OpenVidu终极实战指南
  • Diff Checker:高效文件差异对比工具完整指南
  • 【程序源代码】大学校园二手书籍交易小程序(含前后端源码)
  • 【含文档+PPT+源码】基于微信小程序的社区便民防诈宣传系统设计与实现
  • YOLO模型推理性能优化终极指南:从基础到实战的完整教程