Vue3 + Vite 页面白屏问题(开发环境+生产环境)

文章描述了一位开发者在使用Vue3和Vite构建的项目中遇到安卓设备白屏的问题。通过安装vconsole获取错误信息,发现是由于可选链运算符的ES2020特性导致的兼容性问题。解决方案包括在开发环境引入rollup-plugin-esbuild设置目标浏览器,以及在生产环境使用@vitejs/plugin-legacy或修改build.target来适配低版本浏览器。
摘要由CSDN通过智能技术生成

1 前言

在一次开发过程中,使用 Vue3 + Vite 做了几个简单页面,支持 PC 端和手机端, PC 端测试一切安好,手机端访问本地 IP 进行预览,苹果手机功能正常,但安卓手机直接白屏

2 问题排查

白屏原因猜测

苹果手机访问正常,只有安卓手机才有白屏现象,可能是有些代码安卓不兼容,或者当前安卓自带的浏览器版本过低,大概率是兼容性问题

想办法让白屏浏览器能够查看控制台是否报错

  1. 安装 vconsole
npm i -D vconsole
  1. 修改 main.ts
import Vconsole from 'vconsole'
//开发环境增加调试面板
if (import.meta.env.DEV) {
  new Vconsole()
}
  1. 成功看到错误信息 SyntaxError: Unexpected token '.
    在这里插入图片描述

错误原因排查

  1. SyntaxError: Unexpected token '. 应该是 js 语法报错
  2. 尝试访问没有任何 js 代码的页面能够正常显示
  3. 访问其他页面,均无法正常显示
  4. 分析无法访问页面的 js 代码,发现只要注释掉调用接口的部分代码,页面则能正常显示
  5. 查看调用接口部分的 http 封装,发现代码中有使用?.可选链运算符,该运算符是 ES2020(ES11) 的新特性
  6. 取消?.的使用,页面可以正常显示

浏览器兼容性查看

在这里插入图片描述

  • 白屏浏览器版本
    在这里插入图片描述

3 解决方案

需要让 vite 兼容低版本浏览器

  • 开发环境
  1. 安装 rollup-plugin-esbuild
npm i -D rollup-plugin-esbuild
  1. 修改 vite.config.ts
import esbuild from 'rollup-plugin-esbuild'

plugins:[
  esbuild({
    target: 'chrome64',
    loaders: {
      '.vue': 'js',
      '.ts': 'js'
    }
  })
]
  • 生产环境

方案1:安装 legacy (打包后会多生成一份 .legacy.js 的文件)

  1. 安装 @vitejs/plugin-legacy
npm i -D @vitejs/plugin-legacy
  1. 修改 vite.config.ts
import legacy from '@vitejs/plugin-legacy'

plugins:[
  legacy()
]

方案2:修改 build.target (推荐)

修改 vite.config.ts

build: {
  minify: 'terser',
  target: ['edge90', 'chrome90', 'firefox90', 'safari15'], // 适配低版本浏览器
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值