当前位置: 首页 > news >正文

vue-cli + vue3 项目 ios 苹果手机白屏问题

目录

  • 问题描述
  • 原因分析
  • 解决方案
  • 遇到的坑
    • 1,架构问题
    • 2,项目引入其他依赖的问题
  • 参考

问题描述

vue-cli + vue3 的项目,在苹果手机上打开白屏,安卓手机正常显示。

原因分析

1,借助 vconsole 发现并没有打印报错信息,并且没有请求发出。初步判断可能是 js 新语法的问题(因为安卓手机没有问题)。

<script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>
<script>// VConsole 默认会挂载到 `window.VConsole` 上var vConsole = new window.VConsole();// 接下来即可照常使用 `console` 等方法console.log('Hello world');// 可可移除掉// vConsole.destroy();
</script>

2,原本最优的方案是,通过 mac 链接苹果手机,可以直接在 mac 上看到苹果手机的控制台,就能定位问题了,可是因为某些原因无法使用 mac。

3,那就只能靠猜,用控制变量的方式:先只保留框架再一步步的加项目代码,看看哪些代码会有影响。

经过初步实现,发现了3种苹果手机无法识别的问题

  • 可选链操作符 ?.
obj.val?.prop
  • 空值合并运算符 ??
leftExpr ?? rightExpr
  • 展开语法 和 剩余参数 ...

这3个 js 新语法问题,可以配置对应的 babel 插件来解决

// babel.config.js
module.exports = {presets: ['@vue/cli-plugin-babel/preset'],plugins: ['@babel/plugin-proposal-optional-chaining','@babel/plugin-proposal-nullish-coalescing-operator','@babel/plugin-proposal-object-rest-spread']
}
  • 部分 import/export 语法不支持
// components/index.js
import Header from './Header.vue'
export { Header }
// 某文件中
// 无法识别
import { Header } from '@/components'
// 可识别
import Header from '@/components/Header.vue'

解决方案

这样看来,babel 应该会有统一处理 js 新语法的插件。babel 最终的配置如下

module.exports = {presets: ['@vue/cli-plugin-babel/preset', '@babel/preset-env'],plugins: ['@babel/plugin-transform-runtime']
}

但问题还没有解决!

babel 做降级处理的依据是通过 browserslist 查询出需要支持的浏览器列表。

所以还需要在 .browserslistrc 或是 package.json 中的 browserslist 字段中增加对苹果手机的配置:

"browserslist": ["> 1%","last 2 versions","not dead","not ie 11","ios >= 9"
],

加上这个配置后,会发现最终打包的文件变大了几百kb

另外,browserslist 配置文件,在脚手架创建项目时会自动生成,可以选择作为单独的配置文件,或放到 package.json 中。

以上即可解决。

遇到的坑

1,架构问题

因为这个项目使用的 pnpm 的 monorepo 架构,关键目录如下

-- dist
-- node_modules
-- packages-- pc-- 正常 vue 项目目录-- mobile-- 正常 vue 项目目录
-- package.json
-- pnpm-workspace.yaml

一般来说,如果子项目中都用到的依赖,比如 pc 和 mobile 项目都使用了 mockjs,可以放到项目根目录下的 package.json 中,来避免冗余。

但关于 babel 的配置依赖,这样是无效的

所以,解决方案中 babel 使用的3个依赖,必须放到对应子项目的 package.json 中!

@babel/plugin-transform-runtime
@babel/preset-env
@vue/cli-plugin-babel

2,项目引入其他依赖的问题

这个问题我没有遇到,但发现有其他人遇到,这里也记录下。

问题:如果引入的依赖中也有 js 的高级语法,那也需要做降级处理。

默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来。

解决如下:

// vue.config.js
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({transpileDependencies: ['swiper'], // 或直接设置为 true 表示所有。// ... 其他配置
})

以上。


参考

ios 白屏问题

browserslist 的作用

相关文章:

vue-cli + vue3 项目 ios 苹果手机白屏问题

目录 问题描述原因分析解决方案遇到的坑1&#xff0c;架构问题2&#xff0c;项目引入其他依赖的问题 参考 问题描述 vue-cli vue3 的项目&#xff0c;在苹果手机上打开白屏&#xff0c;安卓手机正常显示。 原因分析 1&#xff0c;借助 vconsole 发现并没有打印报错信息&…...

Spring Boot中的JdbcTemplate是什么,如何使用

Spring Boot中的JdbcTemplate是什么&#xff0c;如何使用 Spring Boot是一个流行的Java应用程序开发框架&#xff0c;它简化了Java应用程序的开发过程&#xff0c;并提供了丰富的功能和工具。在Spring Boot中&#xff0c;JdbcTemplate是一个强大的数据库访问工具&#xff0c;它…...

Python测网络连通性、能否访问某个网络或者端口号<网络检测、ping主机、测试端口>

一、ping命令及其使用 ping命令是在计算机网络领域中用来测试目标主机是否可达以及其延迟时间的命令。对于Python来说&#xff0c;我们可以通过subprocess模块来实现执行命令。下面是示例代码&#xff1a; import subprocessdef ping(host):result subprocess.run([ping, -c…...

【沧元图】玉阳宫主是正是邪,和面具人有勾结吗?现在已有答案了

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析沧元图。 沧元图这部动漫中&#xff0c;有一个很特殊的人物&#xff0c;也是一个让人看不透的人物&#xff0c;因为很多人都不知道这个人是正还是邪&#xff0c;这个人就是玉阳宫主。 因为这个人明面上是掌管东宁府维护东…...

C++笔记之popen()和std_system()和std_async()执行系统命令比较

C笔记之popen()和std_system()和std_async()执行系统命令比较 code review! 文章目录 C笔记之popen()和std_system()和std_async()执行系统命令比较1.popen()2.std::system()3.std::async()——C11提供的异步操作库&#xff0c;适合在多线程中执行外部命令&#xff0c;建议使…...

pycharm2020无法打开,点击无反应

pycharm 2020 无法打开&#xff0c;点击无反应&#xff0c;今天我碰到这现象&#xff0c;总结大体原因 C:\Users\ygw\AppData\Roaming\JetBrains &#xff08;删除该目录即可&#xff0c;一般由于升级安装 或 安装两个不同版本 会存在老旧文件影响导致&#xff09;...

深度学习之微调

在现代深度学习领域&#xff0c;精细调整&#xff08;Fine-tune&#xff09;已经成为一种非常重要的技术手段。 预训练模型 在介绍finetune之前&#xff0c;先了解一下什么是预训练模型。在搭建一个网络模型来完成一个特定的图像分类的任务时&#xff0c;首先&#xff0c;需要…...

【# 完美解决 node.js 模块化后报错 ReferenceError: require is not defined】

完美解决 node.js 模块化后报错 ReferenceError: require is not defined 错误信息如图 直接改插件源码&#xff1a;&#xff08;不是cnpm里的插件&#xff0c;而是下载下来的export2Excel.js&#xff09; 在export2Excel.js内只要改动头部一行源码即可 改之前&#xff1a;…...

Jackson忽略json数组中null元素

问题 前端传过来的json字符串中&#xff0c;其中json数组包含null字符。类型如下&#xff1a; ["0","1","2",null]这边Spring使用Jackson进行反序列化是会出现List对象中&#xff0c;包含null的数组元素。即List大小为4&#xff0c;本来List的…...

基于SpringBoot的网上订餐系统

基于SpringBoot的网上订餐系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;用户、管理员管理员&#xff1a;登录、个人中心、会员管理、…...

【04】基础知识:React组件实例三大核心属性 - state

一、state 了解 理解 1、state 是组件对象最重要的属性&#xff0c;值是对象&#xff08;可以包含多个 key-value 的组合&#xff09; 2、组件被称为 “状态机”&#xff0c; 通过更新组件的 state 来更新对应的页面显示&#xff08;重新渲染组件&#xff09; 强烈注意 1、…...

SpringBoot 过滤器filter当中的自定义异常捕获问题

需求描述&#xff1a;需要根据用户的请求路径拦截做权限控制&#xff1a; 但是这样做全局异常无法捕获 解决方案&#xff1a; 在filter当中引入HandlerExceptionResolver类&#xff0c;通过该类的resolveException方法抛出自定义异常&#xff1a; public class OpenInvokeFil…...

实验3:左右循环LED灯

获取流水灯工程&#xff1a; 方式一&#xff1a; keilproteus 完成最小系统&#xff0c;点亮led 灯实验_吴小凹的博客-CSDN博客 方式二&#xff1a; Flowing_led.zip - 蓝奏云直接下载。 原理图修改&#xff1a; 无须修改只需要使用流水灯的工程即可&#xff0c;解压到桌面…...

行业追踪,2023-10-13

自动复盘 2023-10-13 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

【实用小工具】一键分离音频中的纯人声~

音分轨——能够一键分离出音频中的【人声】和【音乐】&#xff0c;并单独输出为新的音频文件。可以用来扒谱、提取人声、消除背景音等。 第一步&#xff1a;打开【音分轨】APP&#xff0c;进入首页点击【人声分离】 第二步&#xff1a;选择导入方式&#xff0c;上传需要提取伴…...

如何在虚幻引擎中渲染动画?

大家好&#xff0c;今天我将展示如何在虚幻引擎中渲染动画&#xff0c;以及虚幻引擎渲染动画怎么设置的方法步骤。 需要提前了解&#xff1a; 虚幻引擎本地运行慢、渲染慢、本地配置不够&#xff0c;如何解决&#xff1f; 渲云云渲染支持虚幻引擎离线渲染&#xff0c;可批量…...

Hadoop3教程(三):HDFS文件系统常用命令一览

文章目录 语法格式&#xff08;44&#xff09; HDFS的文件系统命令&#xff08;开发重点&#xff09;参考文献 语法格式 hdfs命令的完整形式&#xff1a; hdfs [options] subcommand [subcommand options]其中subcommand有三种形式&#xff1a; admin commandsclient comman…...

2023年中国手机回收量、手机回收价值及行业细分现状分析[图]

手机回收的主要去向包括再销售及环保降解两类。其中进行再交易的二手手机多为9成新及以上手机。二手手机最终去向主要为再销售及环保降解。 2016年以来&#xff0c;我国手机总体出货量持续下滑&#xff0c;2022年全年&#xff0c;国内市场手机总体出货量累计2.72亿部&#xff0…...

格式转换 ▏Python 实现Word转HTML

将Word转换为HTML能将文档内容发布在网页上&#xff0c;这样&#xff0c;用户就可以通过浏览器直接查看或阅读文档而无需安装特定的软件。Word转HTML对于在线发布信息、创建在线文档库以及构建交互式网页应用程序都非常有用。以下是用Python将Word转换为HTML网页的攻略&#xf…...

自己在家给电脑重装系统Win10教程

自己在家怎么给电脑重装系统Win10&#xff1f;Win10电脑系统如果操作时间特别长了&#xff0c;就可能出现卡顿、蓝屏等系统问题&#xff0c;这时候用户就想给电脑重装系统&#xff0c;却不知道重装具体的操作步骤&#xff0c;下面小编给大家详细介绍自己在家给电脑重装Win10系统…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...