APP内嵌h5页面在android低版本出现白屏问题(vue项目)

2023-11-14

前段时间在处理一个vue项目时, 在vivo和华为的android5.0系统出现白屏,没有任何报错信息, 之后特地买了两台真机进行测试, 经过分段调试 , 一步步排查, 最后发现是这段代码出错:
在这里插入图片描述
到底什么问题? 对比一下这段代码
在这里插入图片描述
很明显, 参数默认值的问题! 也就是ES6语法不兼容!
但实际上不完全是, 在这个项目中,有不少类似箭头函数这种语法, 通通都是支持的.实际上项目中是有babel进行转码.

那到底是怎么回事呢?

我们都知道,babel是一个转译器,可以把同种语言的高版本规则翻译成低版本规则, 一般在项目根目录下会有一个 .babelrc 文件, 用于默认解析 ES2015(es6) 中的特殊语法, 像 let,const, => 等等;

而babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。
所以需要使用 babel-polyfill,为当前环境提供一个垫片,需要在Webpack中配置babel-loader

具体操作如下:
1. 如果没有安装babel转码规则,需要先安装,

ES2015转码规则
npm install --save-dev babel-preset-es2015

ES6+不同阶段语法提案的转码规则(共有4个阶段),选装一个就可以了
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$npm install --save-dev babel-preset-stage-2

配置babel转码规则, .babelrc文件如下:

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": ["transform-vue-jsx", "transform-runtime"],
  "env": {
    "test": {
      "presets": ["env", "stage-2"],
      "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
    }
  }
}

在这里插入图片描述

2.安装babel-polyfill
npm install --save-dev babel-polyfill

在入口文件main.js中引入

import babel-polyfill	

在build文件的webpack.base.conf.js文件下修改入口:
在这里插入图片描述

3.配置"babel-loader"
npm install -D babel-loader@7 babel-core babel-preset-env webpack

在package.json文件中的devDependencies{}同级中, 添加代码:

  "babel": {
    "presets": [
      "env"
    ],
    "plugins": []
  }

在这里插入图片描述
在webpack的webpack.base.config.js文件中, 添加如下代码:

{
   test: /\.js$/,
   loader: 'babel-loader',
   include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
 },

在这里插入图片描述
到这就可以了, 完美解决.

扩展:
1. npm run build打包页面空白

原因: 路径错误
解决: 文件:把assetsPublicPath: '/'改为assetsPublicPath: ‘./’

build: {
assetsPublicPath:./,
}
2.Vue在IE、低版本Android显示空白问题

原因: IE对promise的支持不好
解决: 安装:babel-polyfill和es6-promise:

	npm install babel-polyfill
	npm install es6-promise

然后在main.js文件中引用:

import 'babel-polyfill'
import Vue from 'vue'
import Es6Promise from 'es6-promise'
Es6Promise.polyfill()

最后 build/webpack.base.conf.js 文件中配置如下:

module.exports = {
entry: {
app: [“babel-polyfill”,./src/main.js”]
} };
3. IE不支持 Promise 解决办法
引入 <script src = "https://cdn.polyfill.io/v2/polyfill.min.js"></script><script type="text/javascript" src ="https://cdn.polyfill.io/v2/polyfill.min.js?features=es6"></script>
4.解决方法是在项目根目录下新建一个文件vue.config.js,在里面添加如下语句:
module.exports = { chainWebpack: config => {
config.rule(‘js’).include.add(/node_modules/(dom7|swiper)/.*/) } }
5.升级vue2+部分手机访问出现页面空白

npm run dev后可能出现无法加载到路由模板的信息。

解决:config/index.js文件:

把 devtool: ‘#eval-source-map’ 改为devtool:‘inline-source-map’
6.升级vue2+IP访问页面空白

默认只能通过localhost或者127.0.0.1才能访问,如果使用本机的Ip地址会出现无法访问到的情况。

解决:config/index.js文件:

把config/index.js中“host” 配置为“0.0.0.0”就可以解决,或者设置为你电脑的IP地址也行.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APP内嵌h5页面在android低版本出现白屏问题(vue项目) 的相关文章

  • VUE+vue-print-nb,vue打印我踩过的坑

    这几天写了一个需求 要求打印条形码 先来张要打印出来的效果图吧 效果图大概长这样子 图是我随便找的 二维码扫出来是啥我也不知道 哈哈 写这个需求的时候踩了太多的坑了 在此记录下辛酸史 vue print nb基本用法 这个插件用法很简单 安
  • JS数组与对象数据格式互相转换

    JS数组与对象数据格式互相转换 一 二维数组转数组对象 开发过程中后端传过来的数据和自己需要的数据格式不统一 需要数据格式的转化 let twoArr 20 30 40 30 40 50 40 50 60 let keys name1 na
  • $nextTick的作用和使用场景

    nextTick的作用和使用场景 vue中的nextTick主要用于处理数据动态变化后 DOM还未及时更新的问题 用nextTick就可以获取数据更新后最新DOM的变化 适用场景 第一种 有时需要根据数据动态的为页面某些dom元素添加事件
  • Ping操作 ICMP的数据包的分析(基础学习)

    学习链接 https zhuanlan zhihu com p 142665708 https blog csdn net weixin 43742894 article details 115415782 ICMP概述 全称interne
  • 小程序web-view 跳转到h5 监听返回按钮

    1 跳转到h5之后 先给页面堆栈 然后就可以监听到返回事件了
  • 【Javascript】数组拼接的两种方法

    数组拼接的两种方法 1 改变原数组 1 push 扩展运算法 1 不改变原数组 1 concat 2 扩展运算符 1 改变原数组 1 push 扩展运算法 利用push搭配扩展运算符的方法 arr2经过扩展运算符 由 3 4 5 变成3 4
  • Vue 报错:Duplicate keys detected

    Vue 报错 Duplicate keys detected object Object This may cause an update error 在vue 组件中使用 v for 并且加了key 值 如果key 值不唯一 就会出现这样
  • Vue.js中的v-model指令(双向绑定)

    Vue js中v model的作用 v model的作用和使用场景 1 v model的作用 双向绑定 2 v model双向绑定的使用场景 表单 3 总结 v model的作用和使用场景 你好 Vue js作为现在最为常用的前端框架之一
  • ES6的理解

    1 ES6是什么 用来做什么 ES6 全称 ECMAScript 6 0 是 JavaScript 的下一个版本标准 2015 06 发版 它的目标 是使得 JavaScript 语言可以用来编写复杂的大型应用程序 成为企业级开发语言 ES
  • ES6入门:let、const、 var区别及注意事项

    ES6入门 let const var区别及注意事项 一 let const 1 用来声明变量或声明常量 2 let 代替 var 声明变量 const 声明常量 为了那些一旦初始化就不希望重新赋值的情况设计的 3 var let声明的就是
  • ES6非空判断

    es6 Null传导运算符 const firstName message body user firstName default 运算符相当于一种短路机制 只要不满足条件 就不再往下执行 Null 判断运算符 属性的值为null unde
  • es6查根据对象的某个字段查找到值

    前言 es6查根据对象的某个字段查找到值 实现效果 var 新数组 旧数组 filter item gt item value 0 var arr value 0 label 建筑企业资质 value 1 label 承装 修 试 valu
  • 【ES6】Set 和 Map 数据结构

    文章目录 前言 一 Set 1 用法详解 1 1 声明方式 1 2 遍历的四种方式 2 应用场景 2 1 数组去重 2 2 合并去重 2 3交集 2 4 差集 3 WeakSet 二 Map 1 用法详解 1 1 声明方式 1 2 遍历的四
  • 前端常用js插件

    浏览目录 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 MVC 框架和库 基于 Node 的 CMS 框架 模板引擎 Flux 数据可视化 时间轴 编辑器 文件 函数式编程 响应式编程 数据结构 日期 字符串
  • Promise 捕获错误

    你好 我是南一 这是我在准备面试八股文的笔记 如果有发现错误或者可完善的地方 还请指正 万分感谢 前言 今天做项目时 遇到Promise抛出错误捕获不到的情况 然后我就去找了 阮一峰ES6入门重新学了一遍 又加深了对Promise的理解 分
  • js 处理树形结构数据

    js 处理树形结构数据 数据 let data id 1 address 安徽 parent id 0 id 2 address 江苏 parent id 0 id 3 address 合肥 parent id 1 id 4 address
  • JavaScript 实现html导出为PDF文件

    相信各位前端工程狮们在一些报表项目 管理系统项目中都会遇到在这样的需求 申请报 表格 简历等等图文信息有导出为PDF文件 下面是记录我在项目中完成该需求的代码dome 发布出来也是希望对大家有些帮助 1 整体思路 将HTML元素打印或导出为
  • 前端基础(三)- ES7~ES12

    为了方便记忆和称呼 ES2015之后的新知识点我们都统称ES6语法 就没必要去划分得那么细 ES7 2016 Array prototype includes includes方法可以判断一个数组是否包含某个指定的值 如果存在返回true
  • VUE实践优化:轮询机制与代码结构升级

    前言 我们之前探讨过 对于包含处理状态的表格数据 我们可以通过轮询的方式进行处理 轮询更新进度条 JavaScript中的定时器和异步编程技巧 然而 当我们离开页面时 定时器仍会继续触发请求 这会造成资源的浪费 因为返回的数据并没有被渲染出
  • 【JavaScript】Set方法

    基本用法 ES6 提供了新的数据结构 Set 它类似于数组 但是成员的值都是唯一的 没有重复的值 Set 本身是一个构造函数 用来生成 Set 数据结构 const s new Set 2 3 5 4 5 2 2 forEach x gt

随机推荐

  • java的打包后jar包里面的class文件都能被反编译成为源码吗?

    d gui这个工具可以进行反编译的操作 不过反编译的质量随着混淆的程度而定 特别复杂的代码 如加密算法 反编译一般都有问题 可以建议用 javap c p 来看字节码 然后参考jvm指令 总结 一般编译的文件 都可以反编译为源码 但如果是经
  • Boost多线程和Asio

    BOOST ASIO 学习专贴 https www cnblogs com zhangdongsheng p 6984634 html Boost线程库学习笔记 https www cnblogs com younes archive 20
  • 「云+未来」上海峰会,报名开启

    欢迎大家前往腾讯云技术社区 获取更多腾讯海量技术实践干货哦 开放技术能力 探索产业变革 分享腾讯云助力各行业的转型经验 腾讯 云 未来 上海峰会将于9月21日在上海中星铂尔曼大酒店盛大举行 本次峰会以 连接 智能 未来 为主题 邀请政企精英
  • 入门学python的朋友注意了,这17个注意事项要记住哦

    前言 Python这门语言虽然不会很难 但是毕竟是一门编程语言 想要学好学会python 还是要需要注意这17个注意事项 这是我自己在学习python的过程中总结出来的 希望能让你在学习过程中少走弯路 1 在选择python版本的时候 应该
  • tkinter和mysql做登录注册_怎么用flask+mysql来实现一个简单的用户注册和登陆效果的页面呢?请不要用任何ORM...

    一个简单的用户注册和登录的页面 就两个部分 涉及到数据库 存储用户数据 注册 读出用户数据 登录验证 搞清楚如何用python连接和操作数据库即可 还有了解sql数据库语句 sqlite和mysql差不多的 看几眼多试几下就了解了 网站程序
  • 使用micropython(ESP8266、ESP32)驱动SES 2.66寸墨水屏显示中文

    由于需要做一些低功耗的东西 所以最近在尝试玩墨水屏 出于成本考虑 没钱的另一种委婉说法 从咸鱼淘到2块便宜的二手SES 2 66寸三色墨水屏 并使用micropython将其驱动起来 并用字库的方法显示中文 一 屏幕的驱动 1 硬件连线 S
  • c++ string类赋值方法

    1 若s2没有赋初值的正确赋值方法 若s2没有赋初值 那我们要怎样才能给string类的字符串赋值呢 看下面这段代码 只需要将赋值语句改成这样 s2 s2 s1 i 加法即向其赋值 include
  • Android OpenCV实现人脸检测(一)完成人脸检测功能

    环境搭建 Android Studio 集成OpenCV 本节完整的代码链接 Android OpenCV Demo 预览黑屏 下一节会实现预览的功能 1 创建 assets 文件夹 2 在 OpenCV android sdk sdk e
  • 解决问题:安装Visio版本冲突(MSI与即点即用)

    安装Visio参考 https www jianshu com p 43c59f7c394d 问题一 Office 2016 Click to Run 冲突 32位与64位冲突 画外音 我迟早要把那个家庭版给卸载了吧 功能是真的阉割 解决
  • js work 多线程

    js work 多线程 主js function goBack window frames 0 history back 1 console log 准备开启第二线程 var worker new Worker js cpc2 js wor
  • 初识顶点/片元着色器

    5 2 一个最简单的顶点 片元着色器 5 2 1 顶点 片元着色器的基本结构 一个 Unity Shader 的基本结构 它包含了 Shader Properties SubShader Fallback 等语义块 顶点 片元着色器的结构与
  • 理解互斥量和信号量 作者: JuKevin

    理解互斥量和信号量 作者 JuKevin 互斥量 Mutex 互斥量表现互斥现象的数据结构 也被当作二元信号灯 一个互斥基本上是一个多任务敏感的二元信号 它能用作同步多任务的行为 它常用作保护从中断来的临界段代码并且在共享同步使用的资源 M
  • python key=lambda 元素: 元素[字段索引]用法

    key lambda 元素 元素 字段索引 x x 字母可以随意修改 比如改成y y 也行 排序方式按照中括号 里面的维度进行排序 0 按照第一维排序 1 按照第二维排序 2 按照第三维排序 依此类推 如二维 class Solution
  • Python3,实用技巧之:三类(7种)拼接字符串方式

    三类拼接字符串方式 1 引言 2 格式化类 2 1 来自C的 方式 2 2 format 拼接方式 2 3 面向对象模板拼接 3 拼接类 3 1 常用的 方式 3 2 类似元组的方式 3 3 join方法 4 插值类 4 1 f strin
  • 使用MySQL APT库在Linux上安装MySQL

    添加APT仓库 访问https dev mysql com downloads repo apt 选择下载适合自己平台的deb包 执行下面的命令 安装下载的软件包 sudo dpkg i PATH version specific pack
  • 审视HR SaaS:谁在成为中国的 “IBM+ Workday”?

    在国内的商业环境下 未来 梳理流程等咨询管理能力 或将成为HR SaaS厂商的重要竞争力 国内HR SaaS在 IBM Workday 的模式下 或将迎来新一轮增长 作者 斗斗 编辑 皮爷 出品 产业家 2023年 HR SaaS 正式宣布
  • 功率MOS管保护电路设计

    功率MOS管自身拥有众多优点 但是MOS管具有较脆弱的承受短时过载能力 特别是在高频的应用场合 所以在应用功率MOS管对必须为其设计合理的保护电路来提高器件的可靠性 功率MOS管保护电路主要有以下几个方面 1 防止栅极 di dt过高 由于
  • Git是什么?可以用来做什么?如何使用?

    看完本文之后你能收获什么 1 知道git是什么 可以用来干什么 2 会使用git进行版本控制 3 知道如何继续深度学习git git用来干什么 不知道你工作的时候有没有遇到这样的情况 比如说 做BIM建模 你手中有一份模型初稿 但现在需要在
  • java设计模式(二十二)策略模式

    目录 定义 模式结构 角色职责 代码举例 适用场景 优缺点 定义 策略模式 Strategy Pattern 属于对象的行为模式 其用意是针对一组算法 将每一个算法封装到具有共同接口的独立的类中 从而使得它们可以相互替换 策略模式使得算法可
  • APP内嵌h5页面在android低版本出现白屏问题(vue项目)

    前段时间在处理一个vue项目时 在vivo和华为的android5 0系统出现白屏 没有任何报错信息 之后特地买了两台真机进行测试 经过分段调试 一步步排查 最后发现是这段代码出错 到底什么问题 对比一下这段代码 很明显 参数默认值的问题