pnpm audit检测到path-to-regexp漏洞,pnpm why无法定位其来源
问题分析与解决方案
可能的原因
- 依赖为可选/peer依赖:
@nestjs/platform-fastify可能将path-to-regexp作为可选依赖或peer依赖引入,这类依赖默认不会被pnpm why在常规检测中抓取,但会留存于lock文件内。可尝试添加参数执行:pnpm why path-to-regexp --depth=10 --include-optional。 - lock文件未同步:本地依赖树已更新,但lock文件残留旧依赖条目。执行
pnpm install重新生成lock文件后,再检查该版本依赖是否还存在。 - 深层嵌套依赖未被遍历:
pnpm why的深度限制可能未覆盖到实际嵌套层级,或遍历逻辑未触达子依赖的子依赖。可去掉深度限制直接执行pnpm why path-to-regexp,或直接查看lock文件内该版本的完整依赖链,定位引入路径。 - pnpm版本兼容问题:不同版本的pnpm在依赖解析和
why命令处理上存在差异。升级pnpm到最新稳定版后,重新执行pnpm why和pnpm audit验证。
修复建议
- 通过lock文件定位
path-to-regexp@3.2.0的完整依赖链,找到最终引入它的包。 - 若
@nestjs/platform-fastify直接依赖该版本,检查其最新版本是否已升级path-to-regexp,如有则直接升级@nestjs/platform-fastify到修复后的版本。 - 若无法升级上游包,可在
package.json中添加pnpm.overrides字段强制升级:
{ "pnpm": { "overrides": { "path-to-regexp": "^3.3.0" } } }
执行pnpm install即可生效。
内容的提问来源于stack exchange,提问作者sennett
相关产品推荐
相关产品推荐

