竟然与 package-lock.json 更新有关!部分用户 H5 页面白屏问题!

news2024/12/23 22:36:00

一.问题

1 场景

现象
接到部分用户反馈进入xxx H5 页面空白;
研发测日志里问题用户的线上页面URL地址可以正常访问,没有复现问题!!!

定位问题
监控平台和客户端日志报错:

SyntaxError: Unexpected token {

排查
经排查后,发现是更新了package-lock.json 文件导致

2 解决方案

  1. 修改 package.json 文件中的 browserslist 【 > 2% => >1% 】
    在这里插入图片描述

browserslist是一个用于指定项目所支持的目标浏览器范围的配置项,通常用于前端项目中。在package. json文件中的browserslist配置可以告诉各种工具(如Autoprefixer、 Babel等) 项目需要支持哪些浏览器的版本,以便这些工具能够相应地进行代码转译、前缀添加等操作
browserslist配置的值通常是一个字符串, 其中包含一系列浏览器标识符和版本范围。 例如,一个典型的 browserslist 配置可能 是这样的:

"browserslist": [
  "last 2 vers ions" ,
   "> 1%",
  "IE 11"
]

在这个例子中,browserslist 配置指定项目需要支持最近两个版本的所有浏览器、全球使用量超过1%的浏览器以及IE 11浏览器。根据这些配置,相关工具会根据项目的需求来进行代码转译和前缀添加,以确保项目在指定的浏览器范围内能够正常运行。

  1. 备用方案:还原之前的 package-lock.json文件

二. 总结

1. 关于package-lock.json

当package-lock.json文件发生变动时,可能会导致以下情况:
安装的依赖版本发生变化:package-lock.json文件记录了确切的依赖版本,如果这些版本发生变化,可能会导致代码在不同的环境中表现不一致,甚至出现不兼容的情况。
依赖的依赖版本变化:package-lock.json文件不仅记录了直接依赖的版本,还包括了依赖的依赖的版本,如果这些依赖的依赖版本发生变化,也可能会影响代码的行为,导致不兼容问题。

2. 如何预防此类不兼容问题发生

不轻易更新 package-lock.json 文件:可以使用 npm ci 替代 npm i 安装依赖

npm install:通常用于在开发过程中安装新的依赖包,并且会更新 package-lock.json 文件。如果你需要添加新的依赖包,并且希望更新 package-lock.json 以确保依赖版本的一致性,可以使用这个命令。
npm ci:用于在生产环境或持续集成环境中进行依赖安装。它会根据 package-lock.json 文件来安装依赖,而不会更新 package-lock.json 文件,从而确保依赖版本的一致性。如果你需要在生产环境或持续集成环境中安装依赖,可以使用这个命令。
npm install --no-save:用于安装依赖但不更新 package.json 文件中的 dependencies 字段。这个命令通常用于安装临时的开发依赖或工具,而不希望将其添加到 package.json 文件中。如果你只是需要安装临时的开发依赖或工具,并且不希望更新 package.json 文件,可以使用这个命令。

在生产环境中,通常建议根据package-lock.json文件来安装依赖,而不是仅依赖package.json文件。虽然package.json文件中也包含了依赖的信息,但是package-lock.json文件更加确切地指定了依赖的版本和依赖树结构,从而可以确保在不同环境下安装的依赖版本一致。

3. 如何定位“部分用户出现、研发测没有复现”的问题

  1. 参考公司的监控平台
  2. 一定要尽早复现问题,不然很难定位问题!
  • 客户端打日志
  • 使用各真机、各浏览器版本进行复现;
    借助腾讯云真机等之类的工具: https://wetest.qq.com/n/console/default-cpluu8fbu5bkdchdn85g/testlab/remote/devices/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1829164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pc repair

pc repair 修理电脑,换配件

数字化转型,不做是等死,做了是找死

“ 有不少人调侃说:数字化转型,不做是等死,做了是找死。如果你是一个老板,你会怎么选择呢,下面我来剖析一下。” 我按照“做正确的事,正确的做事”来分析数字化转型,再通过抓痛点和流程再造两项…

MySQL经典面试题:谈一谈你对事务的理解

文章目录 📑事务事务的基本概念回滚开启事务的sql语句 事务的基本特性总结一下涉及到的三个问题 ☁️结语 📑事务 事务的基本概念 事务是用来解决一类特定场景的问题的,在有些场景中,完成某个操作,需要多个sql配合完…

HCIA 16 构建 IPv6 网络基础配置

IPv6(Internet Protocol Version 6)也被称为 IPng(IP Next Generation)。由 Internet 工程任务组 IETF(Internet Engineering Task Force)设计,是 IPv4下一代版本。 相比较于 IPv4,I…

第 6 章: Spring 中的 JDBC

JDBC 的全称是 Java Database Connectivity,是一套面向关系型数据库的规范。虽然数据库各有不同,但这些数据库都提供了基于 JDBC 规范实现的 JDBC 驱动。开发者只需要面向 JDBC 接口编程,就能在很大程度上规避数据库差异带来的问题。Java 应用…

【Linux】进程间通信1——管道概念,匿名管道

1.进程间通信介绍 进程是计算机系统分配资源的最小单位(严格说来是线程)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。 进程间通信,顾名…

STM32CubeMX配置-看门狗配置

一、简介 MCU为STM32G070,LSI为32K,看门狗IWDG配置为4S溢出,则配置是设置分频为32分频,重装载值为3000。 二、IWDG配置 1.外设配置 2.时钟配置 3.生成代码 HAL_IWDG_Refresh(&hiwdg); //喂狗

ADS基础教程21 - 电磁仿真(EM)模型的远场和场可视化

模型的远场和场可视化 一、引言二、操作步骤1.定义参数2.执行远场视图(失败案例)3.重新仿真提取参数 三、总结 一、引言 本文介绍电磁仿真模型的远场和场可视化。 二、操作步骤 1.定义参数 1)在Layout视图,工具栏中点击EM调出…

Autosar诊断-FIM模块功能介绍

文章目录 前言一、FIM模块概述二、FID概念介绍Event ID和DTC之间的关系Event ID与FID之间的关系FIM数据结构三、FiM模块与SW-C模块交互关系四、FIM模块函数调用关系FiM功能模块作用过程前言 Autosar诊断的主体为UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是…

力扣191. 位1的个数

Problem: 191. 位1的个数 文章目录 题目描述思路复杂度Code 题目描述 思路 题目规定数值的范围不会超过32位整形数 1.定义统计个数的变量oneCount;由于每次与给定数字求与的变量mask初始化为1 2.for循环从0~32,每一次拿mask与给定数字求与运算&#xff…

鸿蒙求职面试内容总结——6月3日ZR的FS项目

最近接到了一些公司的入职面试邀约,这里略去公司的和项目的名字,做一些整理分享。 一、长列表如何实现部分渲染,使用的是哪一个API 在鸿蒙系统中,可以使用List组件来实现长列表的部分渲染。List组件支持使用条件渲染、循环渲染、…

模板方法模式和命令模式

文章目录 模板方法模式1.引出模板模式1.豆浆制作问题2.基本介绍3.原理类图 2.豆浆制作代码实现1.类图2.SoyaMilk.java 豆浆的抽象类3.PeanutSoyaMilk.java 花生豆浆4.RedBeanSoyaMilk.java 红豆豆浆5.Client.java6.结果 3.钩子方法1.基本介绍2.代码实现1.SoyaMilk.java 添加钩子…

奇思妙想-可以通过图片闻见味道的设计

奇思妙想-可以通过图片闻见味道的设计 偷闲半日享清闲,炭火烧烤乐无边。肉串飘香引客至,笑语欢声绕云间。人生难得几回醉,且把烦恼抛九天。今宵共饮开怀酒,改日再战新篇章。周四的傍晚,难得的闲暇时光让我与几位挚友相…

javaweb 期末复习

1. JDBC数据库连接的实现逻辑与步骤以及JDBC连接配置(单列模式) public class JDBCUtil {// 这些换成自己的数据库 private static final String DB_URL "jdbc:mysql://localhost:3306/你的数据库名称";private static final String USER &q…

gbase8s数据库的逻辑日志、物理日志和两种特殊情形的学习

(一) 日志的介绍 1. 日志的类别 数据库日志主要是分为记录日志、逻辑日志和物理日志。 记录日志:记录日志包括了数据库的报错日志、连接日志、sql执行等信息,这些日志不存储在dbspace上,而是保存在操作系统的文件内逻辑日志和物理日志&…

什么是git?

前言 Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是的,我对git的介绍就一条,想看简介的可以去百度一下😘😘😘 为什么要用git? OK,想象一下…

2-6 基于matlab2018B的语音信号降噪和盲源分离GUI界面

基于matlab2018B的语音信号降噪和盲源分离GUI界面,包括维纳滤波,小波降噪、高通、低通、带通滤波,及提出的滤波方法。每个功能均展示降噪前后声音效果并外放出来。程序已调通,可直接运行。 2-6 语音信号降噪 盲源分离 GUI界面 - 小…

nginx全解

一、Nginx配置文件 1.1 主配置文件 主配置文件位置:nginx.conf tip:安装方式不同,路径不同 #主配置文件格式 ​ main block:主配置段,即全局配置段,对http,mail都有效 ​ #配置Nginx服务器的事件模块相…

Android开发系列:高性能视图组件Surfaceview

一、Surfaceview概述 在Android应用开发领域,面对视频播放、游戏构建及相机实时预览等高性能需求场景,直接操控图像数据并即时展示于屏幕成为必要条件。传统View组件在此类情境下显现局限性: 性能瓶颈:传统View的绘制任务由UI主…

Java17 --- SpringSecurity之OAuth2

一、OAuth2 1.1、使用github以授权码方式 1.1.1、注册应用程序 1.1.2、测试代码 pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId></dependency> spring…