Javascript 如何从中仅更新子依赖的lodash包(babel/core所需的依赖包)lodash@4.17.19至v4.17.21
最近,Javascript 如何从中仅更新子依赖的lodash包(babel/core所需的依赖包)lodash@4.17.19至v4.17.21,javascript,angular,npm,lodash,angular-localize,Javascript,Angular,Npm,Lodash,Angular Localize,最近,lodashpackage在github页面上报告了一个安全漏洞问题。你可以在这里找到详情 lodash的最新版本具有命令注入(CVE-2021-23337)的安全漏洞。 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23337 https://snyk.io/vuln/SNYK-JS-LODASH-1040724 包lodash的所有版本;包org.fujion.webjars:lodash的所有版本都容易通过模板进行命令
lodash
package在github页面上报告了一个安全漏洞问题。你可以在这里找到详情
lodash的最新版本具有命令注入(CVE-2021-23337)的安全漏洞。
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23337
https://snyk.io/vuln/SNYK-JS-LODASH-1040724
包lodash的所有版本;包org.fujion.webjars:lodash的所有版本都容易通过模板进行命令注入。
他们已经解决了这个问题,它的修复程序出现在lodash v4.17.21中。
我使用的是角度为10的版本。我不是直接使用lodash,而是angular软件包中的一个,@angular/localize@10.0.7
内部使用uses@babel/core@7.8.3
这个巴别塔内部使用lodash@4.17.19
Angular用户将在其最新版本中更新版本号,目前,我不想升级到Angular的最新版本。因此,我的问题是如何仅更新lodash包,它是一个依赖于子级的(babel/core所需的依赖性包)lodash@4.17.19到v4.17.21?
npm update lodash
帮了我的忙
$ npm -v
7.6.0
$ npm ls lodash
temp@1.0.0 /Users/trott/temp
└─┬ @angular/localize@10.2.4
└─┬ @babel/core@7.8.3
├─┬ @babel/traverse@7.13.0
│ └── lodash@4.17.19 deduped
├─┬ @babel/types@7.13.0
│ └── lodash@4.17.19 deduped
└── lodash@4.17.19
$ npm update lodash
changed 1 package, and audited 99 packages in 1s
6 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
$ npm ls lodash
temp@1.0.0 /Users/trott/temp
└─┬ @angular/localize@10.2.4
└─┬ @babel/core@7.8.3
├─┬ @babel/traverse@7.13.0
│ └── lodash@4.17.21 deduped
├─┬ @babel/types@7.13.0
│ └── lodash@4.17.21 deduped
└── lodash@4.17.21
$
这并不是您所要求的,因为它更新到最新的lodash
,满足您的依赖项的要求,而不是特定的4.17.21
。恰好(在撰写本文时),@angular/localize
的最新版本是4.17.21
。如果您真的需要一个不是最新版本的特定版本来满足您的依赖性,请继续阅读
假设您想要更新到
4.17.20
。您可以尝试npm更新lodash@4.17.20
。唉,这行不通。该命令运行正常,但不更新任何内容。在这种情况下,您必须npm安装lodash@4.17.20
首先。这也将更新所有依赖项(假设4.17.20
满足它们的要求)。然后npm卸载lodash@4.17.20
将其从您的直接依赖项中删除。感谢@Trott的回答。我尝试过这种方法,它确实下载了lodash的最新软件包版本,即4.17.21。但是,真正让我头疼的是babel/core的Requirements中提到的lodash版本仍然在package.lock.json中显示包版本为4.17.19。它的版本是^4.17.19,但js文件的版本是4.17.21。为什么没有更新呢?嗯……当我做上面的npmls
时,它显示了lodash 4.17.21的所有内容,包括babel/core
依赖项。我认为,bable/core
不更新其依赖项的唯一原因是,是否有其他依赖项需要在4.17.19而不是4.17.21中使用lodash。这似乎意味着有一个依赖项将lodash锁定在4.17.19。更新后,npm ls lodash的输出是什么?您正在运行哪个版本的npm?npm ls lodash显示了更新为最新版本4.17.21的软件包。我运行的npm版本是6.14.6,当你说包锁。json
显示lodash
4.17.19,用于babel/core
,你看到这样的东西了吗<代码>“lodash”:“^4.17.19”或者您是否在某处看到“版本”:“4.17.19”
?它是“lodash”:“^4.17.19”
$ npm -v
7.6.0
$ npm ls lodash
temp@1.0.0 /Users/trott/temp
└─┬ @angular/localize@10.2.4
└─┬ @babel/core@7.8.3
├─┬ @babel/traverse@7.13.0
│ └── lodash@4.17.19 deduped
├─┬ @babel/types@7.13.0
│ └── lodash@4.17.19 deduped
└── lodash@4.17.19
$ npm update lodash
changed 1 package, and audited 99 packages in 1s
6 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
$ npm ls lodash
temp@1.0.0 /Users/trott/temp
└─┬ @angular/localize@10.2.4
└─┬ @babel/core@7.8.3
├─┬ @babel/traverse@7.13.0
│ └── lodash@4.17.21 deduped
├─┬ @babel/types@7.13.0
│ └── lodash@4.17.21 deduped
└── lodash@4.17.21
$