vite前端项目解决在低版本安卓浏览器白屏问题(华为M5、M6设备)

问题描述:vite4.0构建前端项目嵌入到安卓app壳子中通过iframe方式打开前端页面一直白屏,js报错global-this undefined

解决方案:修改legacy配置及构建时target兼容

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import { URL, fileURLToPath } from 'node:url'
import legacy from '@vitejs/plugin-legacy'
import {createHtmlPlugin} from 'vite-plugin-html'

export default defineConfig((commond, mode) => {
  return {
    base: './',
    build: {
      outDir: 'investReport/',
      // 小图转base64
      assetsInlineLimit: 4096,
      minify: 'terser',
      terserOptions: {
        compress: {
          // 去除日志
          drop_console: CLIENT === 'prd',
          // 去除debugger
          drop_debugger: true
        }
      },
      target: 'es2015'     // 兼容性配置注意1
    },
    plugins: [
      vue(),
      AutoImport({
        resolvers: [ElementPlusResolver()],
      }),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
      // 浏览器兼容,兼容性配置注意2
      legacy({
        additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
        targets: ['defaults', 'not IE 11', 'chrome <= 60'],
        modernPolyfills: ['es.global-this'],
        polyfills: ['es.global-this'],
        renderLegacyChunks: true
      }),
      // 增加项目构建时间戳标识 自行百度 vite-plugin-html
      createHtmlPlugin({
        minify: true,
        inject: {
          data: {
            dateTime: new Date().toLocaleString(),
          }
        }
      }),
    ],
    resolve: {
      // 路径别名
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    server: {
      host: '0.0.0.0'
    },
    define: {
      // 参数透传
      'process.env': {
        SERVICE_TYPE: JSON.stringify(CLIENT),
      }
    }
  }
})
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值