uni-app ios13系统中js语法??加载不了会出现白屏;请问如何将vue3 cli的es6转es5,vite配置等等的解决方案

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app ios13系统中js语法??加载不了会出现白屏;请问如何将vue3 cli的es6转es5,vite配置等等的解决方案

产品分类

  • uniapp/App

PC开发环境

  • 操作系统:Windows
  • 操作系统版本号:Mac Intel

手机系统

  • 手机系统:iOS
  • 手机系统版本号:iOS 13.2
  • 手机厂商:苹果
  • 手机机型:iphone7

页面类型

  • vue
  • vue版本:vue2

打包方式

  • 离线

项目创建方式

  • CLI
  • CLI版本号:4.08

示例代码

【报Bug】ios13系统中,例如js 语法 ?? 加载不了会出现白屏;请问如何将vue3 cli es6转es5,vite 配置等等,麻烦给下解决方案

操作步骤

【报Bug】ios13系统中,例如js 语法 ?? 加载不了会出现白屏;请问如何将vue3 cli es6转es5,vite 配置等等,麻烦给下解决方案

预期结果

【报Bug】ios13系统中,例如js 语法 ?? 加载不了会出现白屏;请问如何将vue3 cli es6转es5,vite 配置等等,麻烦给下解决方案

实际结果

【报Bug】ios13系统中,例如js 语法 ?? 加载不了会出现白屏;请问如何将vue3 cli es6转es5,vite 配置等等,麻烦给下解决方案

bug描述

【报Bug】ios13系统中,例如使用js 语法 ??  会加载不了出现白屏;
请问如何将vue3 cli es6转es5,请求vite 怎么配置,麻烦给下解决方案,谢谢

3 回复

你好,可以尝试 安装babel来转换

安装 @babel/core @babel/preset-env· yarn add @babel/core @babel/preset-env --dev 在项目根目录创建 babel.config.js module.exports = {
presets: [’@babel/preset-env’],
};


已经解决:
npm i @babel/plugin-proposal-optional-chaining --save-dev
npm i @babel/plugin-proposal-nullish-coalescing-operator --save-dev
npm i rollup-plugin-esbuild --save-dev
在 vite.config.ts 文件里添加
import esbuild from ‘rollup-plugin-esbuild’
export default defineConfig({ plugins: [ { …esbuild({ target: ‘chrome70’, include: /.vue|.ts|.js$/, loaders: { ‘.vue’: ‘js’ } }), enforce: ‘post’ }
],
})

针对您提到的uni-app在iOS 13系统中JS语法加载不了导致白屏的问题,以及Vue 3 CLI和Vite项目中将ES6转换为ES5的配置方案,以下是相关的代码和配置示例。

uni-app iOS 13 JS语法加载问题

首先,确保您的uni-app项目使用了兼容iOS 13的JavaScript语法。由于iOS 13的Safari浏览器对ES6的支持可能不完全,您可以通过Babel将ES6代码转换为ES5。

  1. 安装Babel相关依赖

    在项目根目录下运行以下命令安装Babel:

    npm install --save-dev [@babel](/user/babel)/core [@babel](/user/babel)/preset-env babel-loader
    
  2. 配置Babel

    在项目根目录下创建或修改.babelrc文件,添加以下配置:

    {
      "presets": [
        ["[@babel](/user/babel)/preset-env", {
          "targets": {
            "ios": "13"
          },
          "useBuiltIns": "usage",
          "corejs": 3
        }]
      ]
    }
    
  3. 修改webpack配置

    如果您使用的是uni-app的自定义webpack配置,确保在webpack配置文件中添加Babel loader:

    module.exports = {
      module: {
        rules: [
          {
            test: /\.js$/,
            exclude: /node_modules/,
            use: {
              loader: 'babel-loader',
              options: {
                presets: ['[@babel](/user/babel)/preset-env']
              }
            }
          }
        ]
      }
    };
    

Vue 3 CLI将ES6转换为ES5

对于Vue 3 CLI项目,您可以通过修改babel.config.js文件来配置Babel:

  1. 创建或修改babel.config.js

    在项目根目录下创建或修改babel.config.js文件,添加以下配置:

    module.exports = {
      presets: [
        ['[@babel](/user/babel)/preset-env', {
          targets: {
            "ie": "11",
            "ios": "13"
          },
          useBuiltIns: 'usage',
          corejs: 3
        }]
      ]
    };
    

Vite配置

对于Vite项目,您可以在vite.config.js中配置Babel插件:

  1. 安装必要的依赖

    npm install --save-dev [@vitejs](/user/vitejs)/plugin-vue [@babel](/user/babel)/preset-env vite-plugin-babel
    
  2. 修改vite.config.js

    import { defineConfig } from 'vite';
    import vue from '[@vitejs](/user/vitejs)/plugin-vue';
    import babel from 'vite-plugin-babel';
    
    export default defineConfig({
      plugins: [
        vue(),
        babel({
          babelConfig: {
            presets: [
              ['[@babel](/user/babel)/preset-env', {
                targets: {
                  "ie": "11",
                  "ios": "13"
                },
                useBuiltIns: 'usage',
                corejs: 3
              }]
            ]
          }
        })
      ]
    });
    

通过上述配置,您可以确保您的uni-app、Vue 3 CLI和Vite项目中的ES6代码被转换为ES5,从而兼容iOS 13等老旧浏览器。

回到顶部