在重构支付宝支付H5页面时选择了vue3来重构完成之后发布的时候发现一个问题,ios的支付宝内置浏览器扫码进入没问题但是android支付宝扫码显示白屏,开始以为是不支持es6语法查了资料去掉了严格模式更新依旧无效,考虑到可能回事android低版本系统兼容问题查了一下解决办法修改后果然可以了。
原文链接:https://juejin.im/post/5cb1dc4c5188251b1f4d95ed
修改步骤:
1、根目录下 .babelrc
文件添加以下内容(没有新建即可)
.babelrc
文件跟 package.json
同级。 将以下代码复制到 .babelrc
文件中
{
"presets": ["@babel/preset-env"],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
2、修改 babel.config.js
将以下代码复制到 babel.config.js
文件中
module.exports = {
presets: [
[
"@vue/app",
{
"useBuiltIns": "entry",
polyfills: [
'es6.promise',
'es6.symbol'
]
}
]
]
};
3. 修改 vue.config.js
用 vue-cli 3 新建项目时,默认是没有这个配置文件的,没有则在项目根目录下新建一个 vue.config.js
,也是跟 package.json
同级。
解决白屏问题需要添加的代码:
module.exports = {
transpileDependencies: ['webpack-dev-server/client'],
chainWebpack: config => {
config.entry.app = ['babel-polyfill', './src/main.js'];
}
}
4. 修改 main.js
文件
找到 项目根目录/src/main.js
,添加以下代码
import 'babel-polyfill'
import Es6Promise from 'es6-promise'
Es6Promise.polyfill()
5. 安装依赖
在根目录下执行以下语句。
npm install --save-dev @babel/core @babel/plugin-transform-runtime @babel/preset-env es6-promise babel-polyfill
以上五步配置完就可以解决 Vue 项目在低版本安卓系统和 IE 浏览器下显示空白的问题了。