关于Safari浏览器在ios<16.3版本不支持正则表达式零宽断言的解决办法

异常原因

今天在升级Dify版本的时候发现低版本的ios手机出现了以下报错:

复制代码
SyntaxError: Invalid regular expression: invalid group specifier name

Error: 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版本的时候不支持正则表达式的零宽断言。

参考原因:

  1. 相关链接: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

重新启动验证。

我使用降级后就不再报错了。

相关推荐
2501_916007472 小时前
HTTPS 抓包乱码怎么办?原因剖析、排查步骤与实战工具对策(HTTPS 抓包乱码、gzipbrotli、TLS 解密、iOS 抓包)
android·ios·小程序·https·uni-app·iphone·webview
2501_916008898 小时前
HTTPS 双向认证抓包实战,原理、难点、工具与可操作的排查流程
网络协议·http·ios·小程序·https·uni-app·iphone
2501_915106328 小时前
HTTPS 能抓包吗?实战答案与逐步可行方案(HTTPS 抓包原理、证书Pinning双向认证应对、工具对比)
网络协议·http·ios·小程序·https·uni-app·iphone
游戏开发爱好者88 小时前
App HTTPS 抓包实战,原理、常见问题与可行工具路线(开发 测试 安全 角度)
网络协议·安全·ios·小程序·https·uni-app·iphone
2501_915106328 小时前
App HTTPS 抓包实战指南,原理、常见阻碍、逐步排查与工具组合
网络协议·http·ios·小程序·https·uni-app·iphone
CocoaKier9 小时前
苹果海外老账号续费,踩了个大坑!
ios·apple
叫我詹躲躲16 小时前
别再手写正则了!20 + 证件 / 手机号 / 邮箱验证函数,直接复制能用
前端·javascript·正则表达式
2501_9151063218 小时前
上架 App 全流程解析,iOS 应用上架步骤、App Store 审核流程、ipa 文件上传与测试分发经验
android·ios·小程序·https·uni-app·iphone·webview
2501_916013741 天前
苹果应用上架全流程指南 iOS 应用发布步骤、App Store 审核流程、ipa 文件上传与 uni-app 打包实战经验
android·ios·小程序·uni-app·cocoa·iphone·webview