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 报错,可直接修改报错语法,根据自身进行适配处理。

相关推荐
江城开朗的豌豆2 小时前
从 JavaScript 到 TypeScript:我为什么选择了类型守护
前端·javascript
杨超越luckly2 小时前
HTML应用指南:利用POST请求获取全国爱回收门店位置信息
大数据·前端·python·信息可视化·html
鹏多多3 小时前
解锁flutter弹窗新姿势:dialog-flutter_smart_dialog插件解读+案例
前端·flutter·客户端
IT_陈寒3 小时前
Redis 7.0的这个新特性让我处理百万级QPS轻松了50%,你可能还不知道!
前端·人工智能·后端
2301_796512523 小时前
Rust编程学习 - 如何快速构建一个单线程 web server
前端·学习·rust
蒜香拿铁3 小时前
Angular【核心特性】
前端·javascript·angular.js
天天向上10243 小时前
vue3 css使用v-bind实现动态样式
前端·css·vue.js
艾小码3 小时前
前端新手必看!困扰90%人的10个JavaScript问题,一次性帮你解决
前端·javascript
xixixin_6 小时前
【React】为什么移除事件要写在useEffect的return里面?
前端·javascript·react.js
嘗_6 小时前
react 源码2
前端·javascript·react.js