我使用了"axios": "^0.19.2",运行npm i给出了警告"npm @0.19.2:在V0.21.1.中修复的关键安全漏洞“,所以我运行npm update -S axios来更新它。但它未能更新axios。我运行yarn upgrade axios,但也失败了。
我原以为可能有一个模块需要0.19.2,所以我检查了package-lock.json,我在我的项目中找到了唯一需要axios的模块是pm2,但它需要"axios": "^0.21.0",
"@pm2/js-api": {
"version": "0.6.7",
"resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz",
"integrity": "sha512-xxxxxxxx",
"requires": {
"async": "^2.6.3",
"axios": "^0.21.0",
"debug": "~4.3.1",
"eventemitter2": "^6.3.1",
"ws": "^7.0.0"
},我不知道为什么npm更新不能更新axios。然后运行npm uninstall axios,然后安装npm install -S axios,然后安装"axios": "^0.27.2"。
但为什么?
-更新
为了验证我是否可以重现这个问题,我在https://github.com/qiulang/npm-update-error-demo创建了一个项目
这表明,即使我只有一个依赖项axios,npm update axios仍然无法更新。顺便说一下,我使用NPM8.x(同时尝试8.5和最新的8.11)
发布于 2022-06-01 06:03:46
当我使用npm 6运行npm update -S axios --loglevel verbose时,我得到了结果
npm动词过时而不更新axios,因为目前处于与其指定的semver匹配的最大版本
如果我使用npm 8运行,甚至会出现404错误。
npm动词审计错误HttpErrorGeneral: 404未找到- POST https://registry.npmmirror.com/-/npm/v1/security/audits/quick
所以我想这会是npm的缺陷吗?突然,我意识到这是由Caret Ranges ^我使用的,因为通常^意味着修补程序和小的更新(大多数人都对此很熟悉),但它只意味着0.X版本的修补程序更新作为国家预防机制文件说
许多作者将0.x版本视为主要的“突破-变化”指标。 当作者可能在0.2.4和0.3.0版本之间进行中断更改时,Caret范围是理想的,这是一种常见的做法。 ..。 ^0.2.3 := >=0.2.3 <0.3.0
顺便说一句,因为很多答案都是给在package.json中,倾斜(~)和插入符号(^)有什么区别?的,所以关于补丁的答案只有^0.x被埋在里面了。
https://stackoverflow.com/questions/72441858
复制相似问题