UniApp + Vue3 使用 marked 报错:SyntaxError /[\p{L}\p{N}]/u 问题分析与解决

背景

在开发中接收SSE的markdown文本,需要使用库解决,就引入了marked库作为解析器。引入的是marked@4.3.0,在uniapp的vue2版本一切正常。当将该页面迁移到vue3版本就出现报错。

报错如下图所示:

问题分析

引入的marked,/[\p{L}\p{N}]/u语法,是需要​​运行在ES2018,Unicode 正则支持​ ,在vue3版本打包后没有对该语法进行处理,导致打包后运行在微信小程序出现报错,导致页面白屏。

解决方案

  1. 更换marked库
  2. 修改vite配置,语法降级
  3. 修改marked库源码

由于我是直接引入源文件放入分包中,因为直接使用npm引入,会打入主包。将该语法进行替换,根据自身情况进行替换:

我将其中:!e.match(/[\p{L}\p{N}]/u) ,修改为:!/[a-zA-Z0-9\u4e00-\u9fff]/.test(e)

测试后正常展示。

总结

最后总结一下,出现/[\p{L}\p{N}]/u 报错,可直接修改报错语法,根据自身进行适配处理。

相关推荐
程序员爱钓鱼3 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder3 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL3 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码4 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_4 小时前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy4 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌4 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight4 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm
LYFlied4 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展