编译强制转换成es2018 uni-app安卓低版本手机报错

编译强制转换成es2018 uni-app安卓低版本手机报错

操作步骤:

  • 扫码就出现 不需要复现

预期结果:

  • 预期安卓手机打开小程序不会报上述错误

实际结果:

  • 实际报了上述错误

bug描述:

MiniProgramErrorSyntaxError: Invalid regular expression: /[\p{L}]/u:Invalid property name in character class
Error: SyntaxError: Invalid regular expression: /[\p{L}
]/u.Invalid property name in character classnull
编译为微信小程序 安卓手机预览报错 ios正常 使用了markdown-it等插件 插件和代码中并没有使用上述正则 是编译后vender.js中出现的,尝试使用babel添加转义es语法失败,尝试禁用编译新语法失败,尝试降低插件版本还是失败,


| 信息类别         | 详细信息   |
|------------------|------------|
| 产品分类         | uniapp/小程序/微信 |
| PC开发环境操作系统 | Mac        |
| PC开发环境操作系统版本号 | macmini 15.2 |
| HBuilderX类型    | 正式       |
| HBuilderX版本号  | 4.57       |
| 第三方开发者工具版本号 | 1.06       |
| 基础库版本号     | 3.8.1      |
| 项目创建方式     | HBuilderX   |

更多关于编译强制转换成es2018 uni-app安卓低版本手机报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

你试试跑一下模板项目,看看有没有报错

更多关于编译强制转换成es2018 uni-app安卓低版本手机报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


没有报错

回复 8***@qq.com: 方便发个可复现demo吗?以方便排查问题

回复 DCloud_UNI_JBB: 流式输出 使用markdown-it渲染 安卓手机预览小程序就会出现

回复 8***@qq.com:try { let bufferCache = “” // 1. ArrayBuffer转字符串(兼容微信) const chunkStr = arrayBufferToStr(chunk.data) bufferCache += chunkStr // 2. 按行处理数据(SSE格式) const lines = bufferCache.split("\n") bufferCache = lines.pop() || “” // 剩余不完整行放回缓存 lines.forEach(async (line) => { line = line.trim() if (line.startsWith(“data:”) && line !== “data: [DONE]”) { try { // deepseek const json = JSON.parse(line.substring(5)) if (json.choices?.[0]?.delta?.content) { // console.log(json.choices[0].delta.content) const content = json.choices[0].delta.content state.value += content assistantMessage.content = md.value.render(state.value) }

} catch (err) { console.error(“数据处理出错:”, err) }

回复 8***@qq.com: 方便发个复现demo吗?现在不清楚你的vue版本等相关信息,不好定位问题

这个错误是由于微信小程序在安卓低版本上不支持ES2018的正则表达式特性\p{L}导致的。虽然你的代码中没有直接使用这个正则,但可能是某个依赖库(如markdown-it)在编译后被转换成了包含这种语法的代码。

解决方案:

  1. 在manifest.json中添加以下配置:
"transformOptions": {
  "compilerOptions": {
    "target": "es5"
  }
}
  1. 确保hbuilderx项目根目录下有babel.config.js文件,内容如下:
module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          browsers: ['> 1%', 'last 2 versions', 'not ie <= 8']
        },
        useBuiltIns: 'usage',
        corejs: 3
      }
    ]
  ]
}
  1. 如果问题依旧,可以尝试在vue.config.js中配置:
module.exports = {
  transpileDependencies: ['markdown-it']
}
回到顶部