问题描述:由于之前测试或者开发都是在高版本的浏览器中,然而昨天测试搞了一个低版本的浏览器,其实也不算低Android 9,发现加载的页面打开后空白。然后多人试了后发现是ES6兼容性问题。
问题截图
用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版本最接近的
安装:
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'
// ]
// }),
]
})
运行项目---->部署---->处理完毕