当前逻辑是不是不会进入update更新模块

当前逻辑是不是不会进入update更新模块

const exists = await pkg.exists();
console.log(exists);
if (exists) {
    await pkg.update();
} else {
    await pkg.install();
}

这里在这章是不是进不去update,因为exist是通过pathExists(this.cacheFilePath​)判断,更新了版本号,this.cacheFilePath肯定是不存在的,所以这里还是false,所以后续是执行了pkg.install()更新了模块,而不是通过pkg.update()中的

npminstall()更新的

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
扬_灵 2021-08-19 17:56:14

同学你好,这里的逻辑是可以走到更新模块的,首先this.cacheFilePath这个是插件在缓存中的文件路径,如果你安装过一次插件之后会在缓存中生成这个文件,第一次的时候会走pkg.install()的逻辑,第二次执行的时候这个文件是存在的,就会走到pkg.update()的逻辑去获取最新的版本进行安装。你可以在这里打印this.cacheFilePath的内容看一下。

  • 我也有同样的这个疑问,感觉这个更新的逻辑,是不是没必要写啊?设想了2种情况:当latest版本是当前最新版本,比如1.1.0版本,那么首次安装的时候,走的是install逻辑,再次安装的时候,因为要获取最新版本,而当前最新版本是1.1.0,所以第二次init的时候,虽然会走进update方法中,但什么事情都不会发成;情况2,当前版本是1.1.0,latest版本是1.2.0,那么在调用pkg.exist的时候,就已会获取最新版本,此时1.2.0的路径当然不存在,所以又会走install逻辑,不会进入到update逻辑中,综上,感觉update逻辑没有存在id必要啊

    2021-08-23 15:29:27
  • 同学你好,可以参考一下这个问题https://class.imooc.com/course/qadetail/301136 

    2021-08-23 18:09:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师