uni-app ios13系统中js语法??加载不了会出现白屏;请问如何将vue3 cli的es6转es5,vite配置等等的解决方案
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 怎么配置,麻烦给下解决方案,谢谢
已经解决:
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。
-
安装Babel相关依赖
在项目根目录下运行以下命令安装Babel:
npm install --save-dev [@babel](/user/babel)/core [@babel](/user/babel)/preset-env babel-loader
-
配置Babel
在项目根目录下创建或修改
.babelrc
文件,添加以下配置:{ "presets": [ ["[@babel](/user/babel)/preset-env", { "targets": { "ios": "13" }, "useBuiltIns": "usage", "corejs": 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:
-
创建或修改
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插件:
-
安装必要的依赖
npm install --save-dev [@vitejs](/user/vitejs)/plugin-vue [@babel](/user/babel)/preset-env vite-plugin-babel
-
修改
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等老旧浏览器。