首页 > 其他分享 >【HarmonyOS】鸿蒙应用安装三方包后,为什么每次同步更新都会将三方包更新成最新版本?

【HarmonyOS】鸿蒙应用安装三方包后,为什么每次同步更新都会将三方包更新成最新版本?

时间:2023-12-18 14:47:30浏览次数:46  
标签:三方 包后 package lock oh 更新 json5 版本

【关键字】

鸿蒙应用三方包安装,ohpm三方包安装

 

【问题详情】

进行鸿蒙应用开发时,我们经常会通过ohpm命令安装三方包实现某些功能,但是可能会存在这种情况:当三方包发布新版本后,点击同步工程,会出现默认更新安装的三方包版本情况;但是因为功能版本兼容问题,我们往往不想升级版本,本篇文章介绍为什么会出现此类问题并如何规避解决。此处以API9 Stage模型HarmonyOS应用,@ohos/zxing三方包为例进行说明。

 

【问题复现】

第一步:在API9 Stage模型的工程中,在Terminal中通过如下命令安装2.0.0版本的@ohos/zxing三方包,执行成功后

1)工程oh-package.json5文件中默认添加依赖,并在oh_modules中生成对应三方包目录,查看版本为2.0.0;

ohpm i @ohos/[email protected]

cke_12571.png​​

2)在工程级oh-package-lock.json5中可以看到安装了2.0.0版本@ohos/zxing:

cke_13917.png​​

第二步:由于oh-package-lock.json5文件与oh_modules目录都是自动生成的,通常我们不会将其提交到代码仓中保存,而是通过oh-package.json5文件生成,因此若我们更新项目(此时可能没有oh-package-lock.json5文件与oh_modules目录)或者手动删除oh-package-lock.json5文件后,重新点击【File-Sync and Refresh Project】同步工程,会发现@ohos/zxing三方包依赖版本变高了,重新生成的oh-package-lock.json5和oh_modules中版本如下所示:

cke_2787.png

cke_15314.png​​

cke_16739.png​​

但是我们并不想更新三方依赖版本,因为新版本可能存在功能适配问题,这无形中可能会导致功能无法使用,如何规避这个问题,导致问题原因是什么?

 

【问题分析解决】 

问题发生原因:使用ohpm命令安装指定版本或当时最新版本时,oh-package.json5文件中生成依赖会默认带^符号,此符号表示“次版本和补丁版本可增”,保持主版本(即版本号第一位数字2)不变情况下,次版本号(即版本号第二位数字0)和补丁版本号(即版本号第三位数字0)可以大于等于0,因此若三方包发布了新版本且版本号满足上述条件,oh-package-lock.json并未锁定版本情况下,同步工程中依赖会默认更新三方包版本。

cke_5732.png

问题规避:

由于目前DevEco Studio开发鸿蒙应用,使用ohpm install命令安装三方包会自动添加符号^,因此可以采取如下方式规避:

方式1:每次安装三方包之后,将oh-package.json5中^符号手动去除,这样保证安装固定版本的三方包;

方式2:不通过ohpm install命令安装三方包,直接在oh-package.json5文件中通过代码添加依赖,同样固定版本号,然后再点击右上角【Sync Now】同步工程依赖。

这样依赖包将固定具体版本且不会更新。

cke_7763.png

 

【说明】

只有oh-package-lock.json5中并未锁定三方依赖版本时,重新同步刷新工程才会更新依赖版本,即oh-package-lock.json5不存在时会根据oh-package.json配置的依赖重新更新下载三方包,若本地已通过oh-package-lock.json5文件锁定某个具体版本,同步更新工程则不会更新。

 

【参考文档】

依赖包版本符号介绍(npm与ohpm相同):https://blog.51cto.com/u_15127697/3633383

标签:三方,包后,package,lock,oh,更新,json5,版本
From: https://www.cnblogs.com/mayism123/p/17911171.html

相关文章

  • python常用内置模块(持续更新中)
    random模块相关方法需要掌握的,未提及的建议自行了解importrandom大于0且小于1之间的小数(不含1)random.random()#0.38916016381720087指定区间指定start到end(不含end)之间的随机小数random.uniform(0,10)#8.080921224222864指定区间指定start到end(含end)之......
  • 【电子公文系统】维护和更新记录
    更新记录更新版本发布日期更新内容更新类型1.0.12023-11-15修复登录模块的安全漏洞。安全修复1.1.02023-11-20添加文档共享功能。功能添加1.1.12023-11-30优化页面设计页面优化1.2.02023-12-05更新用户界面设计。功能更新1.2.12023-12-12修......
  • offline RL | Pessimistic Bootstrapping (PBRL):在 Q 更新中惩罚 uncertainty,拉低 OOD
    论文题目:PessimisticBootstrappingforUncertainty-DrivenOfflineReinforcementLearning,ICLR2022,6688spotlight。pdf版本:https://arxiv.org/abs/2202.11566html版本:https://ar5iv.labs.arxiv.org/html/2202.11566openreview:https://openreview.net/forum?id=Y4c......
  • 好久没来了,过来更新一下
    #include<asssert.h>//kMP算法char*my_strstr(constchar*p1,constchar*p2){ assert(p1!=NULL); assert(p2!=NULL); char*s1=(char*)p1; char*s2=(char*)p2; char*cur=(char*)p1; if(!*p2) { return(char*)p1; } while(*cur) {......
  • elasticsearch 文档更新操作:update和update_by_query
    API:(elasticsearch版本7.3)POST/<index>/_update/<_id>POST/<index>/_update_by_query1.POST/<index>/_update/<_id>支持脚本,可以更新、删除或跳过修改文档。更新文档部分内容,传递部分文档,将其合并到现有文档中。#测试--post/update脚本修改文档POST/king_test_p......
  • StarBlog - 2023年底更新内容一览
    前言先说一下我对StarBlog这个系列的文章的规划吧,在StarBlog的1.x版本,我会同步更新两个系列的文章博客前台+接口开发笔记(即当前已发布的这一系列文章)博客Vue后台开发笔记(后续开始持续发布)最近很久没有更新StarBlog系列的文章,事实上我之前已经把【博客Vue后台开发......
  • INFINI Labs 产品更新 | Easysearch 新增快照搜索功能,Console 支持 OpenSearch 存储
    INFINILabs产品又更新啦~,包括Easysearchv1.7.0、Consolev1.13.0。本次各产品更新了Easysearch快照搜索功能;Console支持OpenSearch集群存储系统数据、优化了初始化安装向导流程等。以下是本次更新的详细说明。INFINIEasysearchv1.7.0INFINIEasysearch是一个分布......
  • Vue 2 即将停止更新
    本文翻译自Vue2isApproachingEndOfLife,作者:EvanYou,略有删改。随着2024年即将到来,我们借此机会提醒Vue社区,Vue2将于2023年12月31日终止更新(EOL)。Vue2.0在7年多前的2016年发布。它是Vue成为主流框架旅程中的一个重要里程碑。许多现在的Vue开发者是在Vue2时代开始使用......
  • Jenkins 构建 AWS Fargate 服务的自动化更新控制
    引言在云原生应用开发中,AWSFargate是一种无服务器容器编排服务,能够简化容器的部署和管理。结合Jenkins,我们可以实现对AWSFargate服务的自动构建和更新控制。本文将介绍如何通过Python脚本实现Fargate服务的自动构建和部署,并通过DingDing机器人发送通知。Jenkins构建A......
  • likeshop商城小程序接入第三方支付富友支付方法
    likeshop商城小程序接入富友支付的小程序支付功能需要用到富友的第三方插件一、开发步骤第一步:订单支付插件接口-封装报文;第二步:打开富友插件:https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wxe2ae77d4cbb8abf0&token=158753519&lang=zh_CN,第三步:小程序加入富友插件代码,把第......