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

一.问题

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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW与Matlab联合编程的途径及比较

​ LabVIEW和Matlab联合编程可以通过多种途径实现,包括调用Matlab脚本节点、使用LabVIEW MathScript RT模块、利用ActiveX和COM接口,以及通过文件读写实现数据交换。每种方法都有其独特的优势和适用场景。本文将详细比较这些方法,帮助开发者…

Jupyter Notebook简介

目录 1.概述 2.诞生背景 3.历史版本 4.安装 5.卸载 6.如何使用 7.菜单和菜单项 8.示例 9.未来展望 10.总结 1.概述 Jupyter Notebook是一种基于Web的交互式计算环境,主要用于数据分析、数据科学、机器学习以及探索性编程等领域。允许用户在单个文档中编写…

基于ASRPRO智能离线语音识别模块实现人机交流对话应用

基于ASRPRO智能离线语音识别模块实现人机交流对话应用 ASRPRO智能离线语音识别模块简介ASRPRO智能离线语音识别模块功能介绍ASRPRO智能离线语音识别模块电路说明ASRPRO智能离线语音识别模块应用案例ASRPRO智能离线语音识别模块管脚说明ASRPRO芯片管脚分布图ASRPRO语音识别模块系…

基于CentOS Stream 9平台安装Redis7.0.15

已更正systemctl管理Redis服务问题 1. 官方下载地址 https://redis.io/downloads/#redis-downloads 1.1 下载或上传到/opt/coisini目录下: mkdir /opt/coisini cd /opt/coisini wget https://download.redis.io/releases/redis-7.0.15.tar.gz2. 解压 tar -zxvf re…

Bug:SSH Failed Permission Denied(完美解决)

Bug:SSH Failed Permission Denied(完美解决) 今天我本机mac通过ssh访问linux服务器时报错:SSH Failed Permission Denied 思路: linux服务器sshd是否开启linux /etc/ssh/sshd_config配置是否正确(是否开启…

springboot集成shardingsphere-分库分表

导入maven依赖&#xff0c;如下 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><a…

【MYSQL】MYSQL操作库

1.数据库字符编码集/数据库校验集 当我们在数据库中保存数据时&#xff0c;需要存和取时候编码一致&#xff0c;比方说你用汉语保存的数据&#xff0c;当你读的时候为了避免乱码问题&#xff0c;也必须用汉语读&#xff0c;这就叫做数据库字符编码集一致。 当我们进行查找&…

代码随想录算法训练营刷题复习1 :动态规划背包问题 01背包+完全背包

动态规划刷题复习 一、01背包 416. 分割等和子集1049. 最后一块石头的重量 II494. 目标和474. 一和零 416. 分割等和子集 class Solution { public:bool canPartition(vector<int>& nums) {int sum0;for(int i0;i<nums.size();i) {sumnums[i];}if(sum%2!0)retu…

Python高级编程:Functools模块的8个高级用法,强烈建议添加到你的开发工具箱中!

目录 1. functools.partial 2. functools.lru_cache lru_cache的特点 cache的特点 性能比较与选择 3. functools.reduce functools.reduce的作用 工作原理 示例 累加序列中的所有元素 计算阶乘 initializer的使用 应用场景 示例:计算平均销售额 小结 4. funct…

不可不知的Java SE技巧:如何使用for each循环遍历数组

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

【面试题】MySQL常见面试题总结

备战实习&#xff0c;会定期给大家整理常考的面试题&#xff0c;大家一起加油&#xff01; &#x1f3af; 系列文章目录 【面试题】面试题分享之JVM篇【面试题】面试题分享之Java并发篇【面试题】面试题分享之Java集合篇&#xff08;三&#xff09; 注意&#xff1a;文章若有错…

StarNet实战:使用StarNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 https://arxiv.org/pdf/2403.19967 论文主要集中在介绍和分析一种新兴的学习范式——星操作&#xff08;Star Operation&#xff09;&#xff0c;这是一种通过元素级乘法融合不同子…

[大模型]XVERSE-7B-chat langchain 接入

XVERSE-7B-Chat为XVERSE-7B模型对齐后的版本。 XVERSE-7B 是由深圳元象科技自主研发的支持多语言的大语言模型&#xff08;Large Language Model&#xff09;&#xff0c;参数规模为 70 亿&#xff0c;主要特点如下&#xff1a; 模型结构&#xff1a;XVERSE-7B 使用主流 Deco…

echarts学习:通过图例事件实现选中后控制多条折线的显隐

1.问题描述 我在工作中遇到了这样一个需求&#xff1a;我们都知道点击echarts折线图的图例&#xff0c;是可以控制折线的显隐的。我现在希望点击某一个图例可以改变多条折线的显隐。 例如在下面这张图中&#xff0c;我将“xxx水位”和“yyy水位”分为一组&#xff1b;将“xxx…

521. 最长特殊序列 Ⅰ(Rust单百解法-脑筋急转弯)

题目 给你两个字符串 a 和 b&#xff0c;请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在&#xff0c;则返回 -1 。 「最长特殊序列」 定义如下&#xff1a;该序列为 某字符串独有的最长 子序列 &#xff08;即不能是其他字符串的子序列&#xff09; 。 字符串 s …

【云原生】docker swarm 使用详解

目录 一、前言 二、容器集群管理问题 2.1 docker集群管理问题概述 2.1.1 docker为什么需要容器部署 2.2 docker容器集群管理面临的挑战 三、docker集群部署与管理解决方案 四、Docker Swarm概述 4.1 Docker Swarm是什么 4.1.1 Docker Swarm架构图 4.1.2 Docker Swarm几…

【MySQL】在CentOS环境下安装MySQL

目录 一、卸载残留环境 二、获取官方yum源 三、安装yum源 四、安装MySQL 五、启动MySQL 一、卸载残留环境 输入 ps axj | grep mysql 查看是否存在正在运行的MySQL服务 如果有&#xff0c;则先输入 systemctl stop mysqld 来关闭服务 然后输入 rpm -qa | grep mysql 查看…

Docker MySQL Shutting down mysqld

6月初至6月15日发现MySQL无故停机多次&#xff0c;导致系统无法使用。接下来各种日志查看&#xff0c;排查原因。先附上一份Docker种MySQL的日志的截图。 一、根据Docker的日志初步估计是数据库内存飙升&#xff0c;从而被系统杀掉进程 查询Linux系统日志&#xff0c;在宿主机…

Python武器库开发-武器库篇之Mongodb未授权漏洞扫描器(五十六)

Python武器库开发-武器库篇之Mongodb未授权漏洞扫描器(五十六) MongoDB 未授权访问漏洞简介以及危害 MongoDB是一款非常受欢迎的开源NoSQL数据库&#xff0c;广泛应用于各种Web应用和移动应用中。然而&#xff0c;由于默认配置的不当或者管理员的疏忽&#xff0c;导致不少Mon…

常用串口助手推荐

串口助手作为嵌入式软件工程师最常用的工具&#xff0c;相信大部分的同学都不陌生&#xff0c;这里就不介绍它的使用啦&#xff0c;介绍介绍有哪些好用的款。感兴趣的小伙伴也可以自己去写一个串口助手。 一、SSCOM5.13.1 站内下载资源&#xff1a; https://download.csdn.n…