pnpm audit 报告高危漏洞,但不知道怎么修复?
我用 pnpm 管理项目依赖,今天运行 pnpm audit 时提示有个高危漏洞,说是 axios 版本太低。但我明明在 package.json 里写的是 "axios": "^1.6.0",也重新 install 过,为啥还是报?
尝试过删 node_modules 和 pnpm-lock.yaml 重装,但 audit 结果没变。是不是 pnpm 的解析逻辑和 npm 不一样?下面是我项目里引入 axios 的方式:
import axios from 'axios';
const api = axios.create({
baseURL: 'https://api.example.com',
timeout: 10000,
});
export default api;
pnpm why axios看看是谁在引用旧版本,然后用pnpm update axios或者直接pnpm add axios@latest强制升级,就这样。^1.6.0只代表允许安装的范围,不代表已经装了最新版。先看看实际装的版本:
再看下 lock 文件里 axios 锁定的是哪个版本,大概率是 1.6.0 或更低版本,没升上去。
直接强制更新:
或者指定具体版本:
更新完再跑一次
pnpm audit确认漏洞修复。还有个坑要注意,如果你的项目有其他依赖也引用了 axios,可能存在版本冲突。这种情况在 package.json 里加个 overrides 强制统一版本:
加完重装:
这样基本能解决。pnpm 的依赖解析确实比 npm 严格,lock 文件优先级很高,不手动 update 它不会自动帮你升到范围内最新版。