为何npm overrides会覆盖@nestjs/platform-express依赖?求修复方法
问题原因
你使用的嵌套式overrides配置,会让npm将path-to-regexp的版本全局锁定为^8.0.0——只要没有其他更高优先级的限定规则,所有依赖链中的path-to-regexp都会被替换,包括@nestjs/platform-express下express依赖的实例。这是因为npm的overrides嵌套逻辑并非仅限定父包的子依赖,而是会将子包的版本全局统一为指定值(除非有更精确的依赖链限定)。
修复方案
要精确只覆盖@nestjs/serve-static依赖的path-to-regexp,需使用依赖链语法替代嵌套对象,具体配置如下:
修改package.json中的overrides字段:
"overrides": { "@nestjs/serve-static>path-to-regexp": "^8.0.0" }
配置完成后执行以下步骤确保依赖生效:
- 删除项目根目录下的
node_modules文件夹 - 删除
package-lock.json文件 - 重新运行
npm install安装依赖
这种写法会明确告知npm:仅替换@nestjs/serve-static直接依赖的path-to-regexp版本,其他依赖链中的path-to-regexp会保持原版本(比如express依赖的0.1.10)。
内容的提问来源于stack exchange,提问作者Сергей Зимовец
相关产品推荐
相关产品推荐

