关于Safari浏览器在ios<16.3版本不支持正则表达式零宽断言的解决办法
异常原因
今天在升级Dify版本的时候发现低版本的ios手机出现了以下报错:
SyntaxError: Invalid regular expression: invalid group specifier nameError: Invalid regular expression: invalid group specifier name
Call Stack
46
eval
[native code] (0:0)
./node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1/node_modules/mdast-util-gfm-autolink-literal/lib/index.js
经过排查发现是Safari浏览器在ios手机低于16.3版本的时候不支持正则表达式的零宽断言。
参考原因:
- 相关链接:git issues
3.相关链接: ios safari 正则兼容问题
解决方式
排查我的异常报错日志,是引用的一个包mdast-util-gfm-autolink-literal/
造成的
./node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1/node_modules/mdast-util-gfm-autolink-literal/lib/index.js
去git找相关的issues发现有人反馈过:
地址:iOS 和 Safari 版本 <16.4 中新的“负向后视”正则表达式中断
但是官方在此版本并不打算兼容低版本的标准,给出的建议也是使用Babel转译
所以到此有2个解决方案。
方案一:Babel转译配置
1. Babel转译配置
添加Babel插件以转换命名捕获组:
npm install --save-dev @babel/plugin-transform-named-capturing-groups-regex
在babel.config.js中:
module.exports = {plugins: ['@babel/plugin-transform-named-capturing-groups-regex']
};
2. 强制转译node_modules中的依赖
修改构建配置,确保相关依赖被Babel处理:
// webpack.config.js 或类似配置
module.exports = {module: {rules: [{test: /\.js$/,include: /node_modules\/mdast-util-gfm-autolink-literal/,use: {loader: 'babel-loader',options: {plugins: ['@babel/plugin-transform-named-capturing-groups-regex']}}}]}
};
重新编译
方案二:降级
mdast-util-gfm-autolink-literal在2.0.0的时候没有这个问题,如果可以选择降级的可以指定2.0.0版本
执行降级命令
pnpm install mdast-util-gfm-autolink-literal@2.0.0
重新启动验证。
我使用降级后就不再报错了。
相关文章:

关于Safari浏览器在ios<16.3版本不支持正则表达式零宽断言的解决办法
异常原因 今天在升级Dify版本的时候发现低版本的ios手机出现了以下报错: SyntaxError: Invalid regular expression: invalid group specifier nameError: Invalid regular expression: invalid group specifier name Call Stack 46 eval [native code] (0:0) ./n…...

管理+技术”双轮驱动工业企业能源绿色转型
00序言 在“3060双碳”政策目标下,工业领域作为碳排放的主要来源(占比约70%),国家出台《工业领域碳达峰实施方案》《加快推动制造业绿色化发展的指导意见》等文件,明确行业碳达峰时间表和重点任务,完善碳市…...

每天学一个 Linux 命令(30):cut
可访问网站查看,视觉品味拉满: http://www.616vip.cn/30/index.html cut 命令用于从文件或输入流中提取文本的特定部分(如列、字符或字节位置)。它常用于处理结构化数据(如 CSV、TSV)或按固定格式分割的文本。以下是详细说明和示例: 命令格式 cut [选项] [文件...]…...

智慧养老综合实训室规划与实施:产教融合的智慧养老实践
智慧养老综合实训室作为智慧养老、智慧康养产业发展的关键支撑,深度融合物联网、大数据、人工智能等前沿技术,搭建虚实结合的教学场景,依托DeepSeek知识库模型实现知识的高效转化与创新,旨在打造产教融合的实践平台,为…...
华为设备命令部分精简分类汇总示例
华为网络设备的命令体系庞大且复杂,不同设备系列(如交换机、路由器、防火墙)和不同操作系统版本(如VRP5、VRP8)的命令可能存在差异。以下是一个 精简分类汇总,涵盖常用配置场景和命令示例: 一、…...

JAVA | 聚焦 OutOfMemoryError 异常
个人主页 文章专栏 在正文开始前,我想多说几句,也就是吐苦水吧…最近这段时间一直想写点东西,停下来反思思考一下。 心中万言,真正执笔时又不知先写些什么。通常这个时候,我都会随便写写,文风极像散文&…...
Operating System 实验二 内存管理实验
目录 实验目标: 实验设备: 实验内容: (1)验证FIFO和Stack LRU页面置换算法 【代码(注释率不低于30%)】 【实验过程(截图)】 【结论】 (2)分别用FIFO和Stack LRU页置换算法,自己设定一个页面引用序列,绘制页错误次数和可用页帧总数的曲线并对比(可用Excel绘…...

CF-Hero:自动绕过CDN找真实ip地址
CF-Hero:自动绕过CDN找真实ip地址 CF-Hero 是一个全面的侦察工具,用于发现受 Cloudflare 保护的 Web 应用程序的真实 IP 地址。它通过各种方法执行多源情报收集。目前仅支持Cloudflare的cdn服务查找真实ip,但从原理上来说查找方法都是通用的…...

Linux基础IO(十一)之动态库(基础IO的最后一篇啦!)
文章目录 动态库生成动态库使用动态库现象事实使用外部库动态库怎么被加载的进程地址空间的第二讲关于地址1.程序没有加载前的地址(程序)2.程序加载后的地址(进程)3.动态库的地址 动态库 生成动态库 shared: 表示生成共享库格式…...
【版本控制】SVN + TortoiseSVN版本管理实用教程(附安装+开发常用操作)
摘要: 本文将带你从零开始掌握 SVN 版本控制系统,结合 TortoiseSVN 图形客户端工具,深入学习包括安装、检出、提交、更新、回滚、冲突解决等常用开发操作,快速上手团队协作! 🧩 什么是 SVN? SV…...
非序列实现MEMS聚焦功能
zemax非序列模式下有MEMS,但是没有对应的代码。无法修改成自己需要的功能 以下是实现MEMS聚焦功能: #include <windows.h> #include <cmath> #include <stdio.h> #include <string.h> #include <algorithm> #undef max #undef min#define D…...

【前端】CSS 基础
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解 CSS 基础语法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自:前端基础…...

【金仓数据库征文】——选择金仓,选择胜利
目录 第一部分:金仓数据库——开创数据库技术的新时代 1.1 金仓数据库的技术底蕴 1.2 高可用架构与灾备能力 1.3 分布式架构与弹性扩展能力 第二部分:金仓数据库助力行业数字化转型 2.1 电信行业:核心系统国产化替代 2.2 医疗行业&…...

跟着尚硅谷学vue-day5
计算属性和watch监视 一.姓名案例 1.姓名案例-插值语法 <div id"root">姓:<input type"text" value"张" v-model"firstname"><br/><br/>名:<input type"text" value&q…...
【C到Java的深度跃迁:从指针到对象,从过程到生态】第四模块·Java特性专精 —— 第十三章 异常处理:超越C错误码的文明时代
一、错误处理的范式革命 1.1 C错误处理的黑暗时代 C语言通过返回值传递错误状态,存在系统性缺陷: 典型错误处理模式: FILE* open_file(const char* path) { FILE* f fopen(path, "r"); if (!f) { return NULL; // 错误信息…...

运维打铁:Centos 7 使用yum安装 mysql5.7
文章目录 一、安装前信息说明二、安装步骤1. 下载并安装官网 RPM 安装包2. 修改配置文件 /etc/my.cnf3. 创建 MySQL 数据相关目录并授权4. 启动 MySQL 服务 三、修改数据库访问密码1. 修改配置文件 /etc/my.cnf2. 重启 MySQL 服务3. 登录数据库并修改密码4. 恢复配置文件并重启…...

网络原理初始
基础概念 组建局域网方式:路由器或者交换机。 IP确定主机,端口号确定使用的应用程序。 端口号:每个程序在进行网络通信中,都需要一个端口号。 协议:通信过程中的约定。 TCP/IP五层网络协议 从上到下 1、应用层&a…...

基于SpringBoot3实现MyBatis-Plus(SSMP)整合快速入门CURD(增删改查)
目录 一、快速搭建SpringBoot-Web工程脚手架。 1.1 Spring Initializr 初始化工程。(官方提供) 1.2 工程脚手架初始化详细步骤。(IDEA2024.1.1) 二、MyBatis-Plus的特性与快速上手。 2.1 官网地址与基本特性。 2.2 快速上手技术栈基础。 2.3 Spring Boot2 的 MyBatis-Plus Star…...

主题模型三大基石:Unigram、LSA、PLSA详解与对比
🌟 主题模型演进图谱 文本建模三阶段: 词袋模型 → 潜在语义 → 概率生成 Unigram → LSA → PLSA → LDA 📦 基础模型:Unigram模型 核心假设 文档中每个词独立生成(词袋假设) 忽略词语顺序和语义关联 …...
Redis 热 key 和大 key 问题
一、什么是 Redis 热 key? 热 key(Hot Key)定义: 在单位时间内被**频繁访问(读/写)**的 key,导致其访问集中、压力过大。 热 key 常见表现: QPS 极高(某 key 每秒被访问…...

基准指数选股策略思路
一种基于Python和聚宽平台的量化交易策略,主要包含以下内容: 1. 导入必要的库 - 导入jqdata和jqfactor库用于数据获取和因子计算。 - 导入numpy和pandas库用于数据处理。 2. 初始化函数 - 设置基准指数为沪深300指数。 - 配置交易参数,如使用…...

SAP接口超时:对 FOR ALL ENTRIES IN 的优化
SAP接口超时 经分析要10多分钟以上才出结果,且是这个语句耗时较长: SELECTaufnrmatnrbdmnglgortmeinschargFROM resbINTO CORRESPONDING FIELDS OF TABLE lt_lylcddxhFOR ALL ENTRIES IN lt_lylcddWHERE aufnr IN r_aufnr发现RESB有420万条记录…...
如何成功防护T级超大流量的DDoS攻击
防护T级超大流量的DDoS攻击需要综合技术、架构与运营策略的多层次防御体系。以下是基于最新技术实践和行业案例总结的关键防护策略: 一、流量清洗与分布式处理 部署流量清洗中心 T级攻击的核心防御依赖于专业的流量清洗技术。通过部署分布式流量清洗集群,…...
【Easylive】为什么需要手动转换 feign.Response 到 HttpServletResponse
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 为什么需要手动转换 feign.Response 到 HttpServletResponse? feign.Response 是 Feign 客户端调用远程服务后返回的原始 HTTP 响应对象,而 HttpServletResponse 是…...
深入理解机器学习:人工智能的核心驱动力
在当今数字化时代,机器学习作为人工智能领域的关键技术,正以前所未有的速度改变着我们的生活和工作方式。从智能语音助手到精准的医疗诊断,从个性化的推荐系统到自动驾驶汽车,机器学习的应用无处不在,其影响力深远而广…...

Shell 脚本入门:从零开始写自动化脚本
目录 一、Shell 、Shell 命令、Shell 脚本 二、常用 Shell 命令与注释写法 三、echo 命令的使用 四、Shell 变量类型 五、变量与参数使用 六、读取用户输入 七、算术运算 八、条件判断与流程控制 九、循环结构 十、函数定义与调用 一、Shell 、Shell 命令、Shell 脚本…...
Vibracostic EDI 需求分析
Vibracostic 是德国Freudenberg集团旗下全球领先的减振与噪音控制技术公司,专注于为汽车及工业领域提供高效振动管理和隔音解决方案,客户涵盖宝马、奔驰、特斯拉等主流车企。 Vibracostic EDI 需求分析 供应商接收Vibracostic发来的DELFOR交付预测报文…...
【网络安全】社会工程学策略
1. 社会工程学简介 社会工程攻击是威胁行为者常用的攻击方式。这是因为,诱骗人们提供访问权限、信息或金钱通常比利用软件或网络漏洞更容易。 您可能还记得,社会工程学是一种利用人为错误来获取私人信息、访问权限或贵重物品的操纵技术。它是一个涵盖性…...
项目笔记2:post请求是什么,还有什么请求
在 HTTP(超文本传输协议)中,请求方法用于向服务器表明客户端想要执行的操作。POST 请求是其中一种常见的请求方法,此外还有 GET、PUT、DELETE 等多种请求方法,下面为你详细介绍: POST 请求 定义ÿ…...

【最新版】西陆健身系统源码全开源+uniapp前端
一.系统介绍 一款基于UniappThinkPHP开发健身系统,支持多城市、多门店,包含用户端、教练端、门店端、平台端四个身份。有团课、私教、训练营三种课程类型,支持在线排课。私教可以通过上课获得收益,在线申请提现功能,无…...