【HarmonyOS NEXT】每次升级二方库或三方库,工程都会报错

news/2024/10/26 11:38:58/

【问题描述】

  1. 当项目里使用了模块静态共享包的形式开发,打包成har集成。

  2. 可能会出现几个模块依赖了相同模块的问题,而依赖的版本却不一样,例如:

    A模块依赖B、C、D

    B模块依赖C、E

    C同时被A、B依赖

    在开发阶段,当C版本升级时,A知道C有新版本,A升级了C的版本

    而B并不知道C升级了,依赖的是旧版本的C模块

    然而A还依赖B,这会导致A的直接间接依赖了两个版本的C,这会出现依赖冲突,导致项目报错

  3. 正常来说oh-package-lock.json5里会记录各模块的依赖关系,编辑器会更据oh-package.json5,依赖的安装情况,使用最新的C运行工程,是不应该出现报错的。

【可能原因】

  1. 编辑器的bug

  2. 编辑器有缓存

【解决方式】

  1. 构建-重新构建项目:如果这一步不行,继续往后执行。

  2. 构建-清理项目:执行完成编辑器会自动清理build目录

  3. 手动删除目录里所有的oh_modules

  4. 手动删除oh-package-lock.json5,(执行第4步会自动生成正确的文件)

  5. 关闭编辑重新打开,让编辑自动安装依赖(不建议执行完第2第3步后,手动执行ohpm install,因为关闭编辑可以打断与source.map引用)

【测试】

  1. 点击运行,项目能运行起来

http://www.ppmy.cn/news/1542103.html

相关文章

自然语言处理:第五十五章 RAG应用 FastGPT 快速部署

代码: labring/FastGPT: FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop …

Zustand介绍与使用 React状态管理工具

文章目录 前言基本使用编写状态加方法在组件中使用异步方法操作 中间件简化状态获取优化性能 持久化保存 前言 在现代前端开发中,状态管理一直是一个关键的挑战。随着应用规模的扩大,组件间的状态共享变得愈加复杂。为了应对这一需求,开发者…

k8s部署metallb实现service的LoadBalancer模式

开启ipvs并开启严格ARP模式 参考https://metallb.io/installation/ kubectl edit configmap -n kube-system kube-proxy源 mode: "" ipvs:strictARP: false改成 mode: "ipvs"ipvs:strictARP: truek8s原生部署metallb 下载 wget https://raw.githubuse…

青少年编程与数学 02-002 Sql Server 数据库应用 09课题、规则、约束和默认值

青少年编程与数学 02-002 Sql Server 数据库应用 09课题、规则、约束和默认值 课题摘要:一、规则二、规则应用示例三、约束四、约束应用示例五、默认值六、关系(Relationship)七、一致性、完整性和可维护性 本课题介绍了SQL Server中规则、约束和默认值的…

UE5里的TObjectPtr TSharedPtr TWeakPtr有什么区别

在 Unreal Engine(UE)编程中,TObjectPtr、TSharedPtr 和 TWeakPtr 都是 指针类型,但它们在生命周期管理和使用场景上有不同的特点。让我们详细分析这些指针的区别和用途。 TObjectPtr TObjectPtr 是 UE5 中引入的新智能指针类型…

fpga系列 HDL: 竞争和冒险 01

卡诺图是一种逻辑化简工具,用来在布尔函数的最小项和形式中,找到冗余项并实现逻辑化简。也可用于HDL中竞争和冒险的判断。 最小项 任何一个逻辑函数都能化简为最小项的和的形式对于 n 个变量的布尔表达式,每个变量都必须以原变量&#xff0…

美​团​一​面​-​3​​宁​德​时​代​一​面

美团: 1. 请尽可能详细地说明,小程序相对于H5的优势,可以结合开发人员的开发过程感受和用户体验等方面详细展开叙述。你的回答中不要写出示例代码。 小程序相对于H5的优势可以从多个角度进行详细分析,包括开发人员的开发过程感受…

微信小程序中关闭默认的 `navigationBar`,并使用自定义的 `nav-bar` 组件

要在微信小程序中关闭默认的 navigationBar,并使用自定义的 nav-bar 组件,你可以按照以下步骤操作: 1. 关闭默认的 navigationBar 在你的页面的配置文件 *.json 中设置 navigationBar 为 false。你需要在页面的 JSON 配置文件中添加以下代码…