ES6兼容性问题:导致浏览器低版本加载H5空白

252 阅读1分钟

问题描述:由于之前测试或者开发都是在高版本的浏览器中,然而昨天测试搞了一个低版本的浏览器,其实也不算低Android 9,发现加载的页面打开后空白。然后多人试了后发现是ES6兼容性问题。

问题截图

image.png 用Android低版本模拟器加载打开也提示:

"Uncaught SyntaxError: Unexpected token ?", source:

途径方案

因为用的是vite+vue方式,而且服务器部署对node有指定的版本,如果高于这个版本就会报错。 之前vite用的是4.x,然后需要找到对应的这个版本@vitejs/plugin-legacy 不然会一直提示版本冲突,或者你随意填充了一个版本,会提示notfound。 1、打开npm:www.npmjs.com/ 2、搜索:@vitejs/plugin-legacy 3、点击版本,找到跟vite版本最接近的

image.png

安装:

npm install @vitejs/plugin-legacy@^4.1.1
npm add -D terser

使用

在vite.config.js的plugins数组插件里使用legacy()

先import


import legacy from '@vitejs/plugin-legacy'

// https://vitejs.dev/config/
export default defineConfig({
  
  plugins: [
    vue(),
    //省略。。。。
    // 注册 legacy 插件
    legacy()
    // legacy({
    //   targets: ['ie >= 11', 'chrome <= 60'], // 需要兼容的目标列表,可以设置多个
    //   additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
    //   renderLegacyChunks: true,
    //   polyfills: [
    //     'es.symbol',
    //     'es.array.filter',
    //     'es.promise',
    //     'es.promise.finally',
    //     'es/map',
    //     'es/set',
    //     'es.array.for-each',
    //     'es.object.define-properties',
    //     'es.object.define-property',
    //     'es.object.get-own-property-descriptor',
    //     'es.object.get-own-property-descriptors',
    //     'es.object.keys',
    //     'es.object.to-string',
    //     'web.dom-collections.for-each',
    //     'esnext.global-this',
    //     'esnext.string.match-all'
    //   ]
    // }),
  ]
})

运行项目---->部署---->处理完毕

juejin.cn/post/735830…