vue3+vist 打包空白


一、问题

在使用vue3.2和vite2.0+开发一个移动端H5,测试时发现很多低版本的安卓手机浏览器出现白屏的现象,而ios机型基本上是好的,原因是很多低版本浏览器并不支持原生ESM导入的方式,下面给出解决方案:

vue3+vist 打包空白

Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec.

二、兼容原生ESM的浏览器

在使用vue3.2和vite2.0+开发一个移动端H5,测试时发现很多低版本的安卓手机浏览器出现白屏的现象,而ios机型基本上是好的,原因是很多低版本浏览器并不支持原生ESM导入的方式,下面给出解决方案:默认情况下,Vite 的目标浏览器是指能够 支持原生 ESM script 标签 和 支持原生 ESM 动态导入 的。作为参考,Vite 使用这个 browserslist 作为查询标准:

Chrome >=87

Firefox >=78

Safari >=13

Edge >=88

三、解决方案

步骤一:  vite.config.ts里 build.target 配置项 指定构建目标为 es2015 步骤二: 通过插件 @vitejs/plugin-legacy 来自动生成传统浏览器的 chunk 及与其相对应 ES 语言特性方面的 polyfill。兼容版的 chunk 只会在不支持原生 ESM 的浏览器中进行按需加载。

1. 安装@vitejs/plugin-legacy

PowerShell 全选
yarn add @vitejs/plugin-legacy

2. 配置 vite.config.ts

JavaScript 全选
import { fileURLToPath, URL } from 'node:url'
import legacy from '@vitejs/plugin-legacy'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  base: './',
  plugins: [
    vue(),
    legacy({
      targets: [
        '> 1%, last 1 version, ie >= 11',
        'safari >= 10',
        'Android > 39',
        'Chrome >= 60',
        'Safari >= 10.1',
        'iOS >= 10.3',
        'Firefox >= 54',
        'Edge >= 15'
      ],
      additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
      polyfills: ['es.promise.finally', 'es/map', 'es/set'],
      modernPolyfills: ['es.promise.finally']
    })
  ],
  build: {
    target: 'es2015'
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

如果编译报错:

 build编译报错信息

x Build failed in 2.92s

error during build:

Error: [vite:terser] terser not found. Since Vite v3, terser has become an optional dependency. You need to install it.

    at loadTerserPath (file:///D:/project/_SZL/vue-project/node_modules/vite/dist/node/chunks/dep-jvB8WLp9.js:15226:19)

    at Object.renderChunk (file:///D:/project/_SZL/vue-project/node_modules/vite/dist/node/chunks/dep-jvB8WLp9.js:15265:32)

    at file:///D:/project/_SZL/vue-project/node_modules/rollup/dist/es/shared/node-entry.js:19563:40

    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

error Command failed with exit code 1.

解决方案:

PowerShell 全选
yarn add terser --legacy--peer-deps

参考:

https://www.jb51.net/javascript/290338iub.htm

https://zhuanlan.zhihu.com/p/595407605

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:mstsc远程桌面RDP
下一篇:win11安装密钥
评论列表

发表评论

评论内容
昵称:
关联文章

vue3+vist 打包空白
vue打包js文件添加hash
VUE Cli3项目添加LESS支持
python3项目打包成exe可执行程序
vue vue-clie多环境配置
vue3 组合模式 组件自己引用自己 递归组件 组件命名
vs2019+windows服务+nancy+打包
VUE qiankun
Microsoft Store 桌面应用发布流程(一)之打包应用
IIS URL重定向VUE配置
excel2007直接打开文件空白,需要菜单打开
Python pyinstaller 打包参数说明
vue 编译不同环境
新建vue项目出现error Unexpected ‘debugger‘ statement no-debugger
html 两个image中间有间隙,有空隙,有空白,有间隔
使用.NET 6开发TodoList应用(30)——实现Docker打包和部署
vue结合qiankun无法使用vue devtools调试子项目
VUE使用sass提示在sass文件中提示Syntax Error : this.getOptions is not a function
.NET 微服务——CI/CD(2):自动打包镜像
vue 路由跳转的几种方式(带参数)

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码