解决vite打包后浏览器控制台"unexpected token ?"报错

1,677 阅读1分钟

1、问题:uniapp-cli项目使用vite打包部署后在钉钉app访问显示白屏

2、分析

在html引入eruda后重新打包部署查看控制台报错unexpected token ? 使用uniapp-cli模式vue3+ts语法,cli编译器版本是3.0.0-3081220230817001,,vite版本是4.0.3,vue版本是3.3.4

<script type="text/javascript" src="http://cdn.bootcdn.net/ajax/libs/eruda/2.4.1/eruda.js"></script>
  <script>
    eruda.init()
    console.log(navigator.userAgent)
  </script>

3、解决办法

修改vite.config.ts

import legacy from "@vitejs/plugin-legacy"

plugins: [
    legacy({
        targets: ["chrome 52"], // 需要兼容的目标列表
        additionalLegacyPolyfills: ["regenerator-runtime/runtime"]
    })
]

重新打包部署后控制台报错变成了globalThis is not defined

修改vite.config.ts

import legacy from "@vitejs/plugin-legacy"

plugins: [
    legacy({
        modernPolyfills: true, // 启用此选项将为现代构建生成一个单独的polyfills块
        renderLegacyChunks: true, // 只在你使用`modernPolyfills`时有用,它本质上允许你使用这个插件将polyfill注入到现代构建中
        targets: ["chrome 52"], // 需要兼容的目标列表
        additionalLegacyPolyfills: ["regenerator-runtime/runtime"] // 基于目标浏览器范围和最终捆绑包中的实际使用情况生成polyfills块,ie11?
    })
]

问题解决 但是在开发模式下,Vite不会转译文件,所以只有打包后才生效。
开发环境如何兼容钉钉浏览器

参考:
vite-github1 vite-github2
plugin-legacy