当前位置: 首页 > 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.cnnetsun.cn/news/126175.html

相关文章:

  • 数智化不动产登记与地籍信息化建设方案
  • 【办公类-39-07】20251217通义万相动物图(万相2.6 数字人-对口型)
  • cursor-free-vip终极指南:一键突破AI工具限制的完整方案
  • MTK设备启动保护机制绕过实用教程:高效解锁工具深度解析
  • 20、毫米波(mmWave)介质访问控制综述
  • 42、LINQ查询表达式与.NET集合类型详解
  • vue+springboot社区外来务工人员管理系统_数据分析可视化大屏系统10vz9c0a_jz119
  • 53、多线程编程中的同步、存储、定时器与异步编程模型解析
  • 55、.NET 多线程与平台互操作性编程指南
  • 二十二、【鸿蒙 NEXT】扫码功能
  • 企业微信会话存档Go SDK架构深度解析:高性能消息处理实践指南
  • MetroFramework终极指南:快速将传统WinForms应用升级为现代UI
  • 5分钟搞定!智能代码提取神器让软件著作权申请不再头疼
  • JVM 调优工具深度指南:从监控到诊断的全流程实战
  • ScratchJr-Desktop终极安装配置指南:从零开始快速搭建免费儿童编程环境
  • 杜比大喇叭β版:5个步骤解锁网易云音乐专业音效体验
  • 5分钟快速上手:Vue-Flow-Editor可视化流程编辑器完整指南
  • Aria2终极配置指南:从零搭建高性能下载系统
  • Unity WebGL中RTSP视频流播放的终极解决方案:完整实现指南
  • 期末复习01 实验题
  • 任务一- 2.子任务二:Hadoop完全分布式安装配置
  • 告别图片重复烦恼:AntiDupl.NET智能去重全攻略
  • Kotaemon支持Markdown格式输出吗?内容呈现优化
  • 5步教你用开源眼动追踪工具实现视线控制电脑
  • IndexTTS2语音合成终极指南:10分钟快速上手工业级零样本TTS系统
  • 26、WPF样式、主题与换肤功能全解析
  • 如何监控Kotaemon系统的运行状态与性能指标?
  • 基于Kotaemon的招投标文件智能比对系统
  • 3大架构革新:ESP32 HWCDC数据传输效率提升500%
  • 如何彻底解决WVP-GB28181-Pro视频点播超时:3步快速优化指南