You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么npm install不遵守package.json中声明的依赖版本号

运行环境

  • Node.js版本:14.17.3
  • npm版本:6.14.13

问题原因

1. 已生成的lockfile优先级高于修改后的package.json配置

npm 6的依赖解析逻辑中,package-lock.json的版本优先级高于package.json。你首次执行npm install时,package.json中声明的^2.0.0语义化版本范围,配合bundleDependencies的特殊解析规则,拉取到了3.0.0版本并写入lockfile后,后续修改package.json的版本约束只要不删除已有的lockfile,npm都会优先使用lockfile中已经锁定的3.0.0版本。

2. bundleDependencies的版本解析优先级特殊

当依赖同时出现在devDependencies和bundleDependencies列表中时,npm 6对该依赖的版本解析会优先遵循bundleDependencies的规则,会拉取符合语义化范围的最高可用版本,部分场景下会忽略devDependencies的精确版本约束。

3. 本地缓存与安装残留干扰

如果本地node_modules中已经存在3.0.0版本的tildify,或者npm本地缓存中已经有该版本的安装包,未清理的情况下直接执行npm install,也会复用已有版本,不会重新拉取符合要求的版本。

修复步骤

  • 删除项目根目录下的node_modules文件夹和package-lock.json文件
  • 执行npm cache clean --force清理npm本地缓存
  • 将package.json中tildify的版本声明改为精确版本"tildify": "2.0.0",移除前缀的^符号
  • 重新执行npm install即可安装正确的2.0.0版本

补充说明

显式执行npm install tildify@2.0.0 --save-dev能成功的原因是,手动指定版本安装时,npm会强制更新package.json和package-lock.json的版本记录,忽略已有的lockfile版本锁定。

内容的提问来源于stack exchange,提问作者inutan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:18:03