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

如何更新next-drupal内部依赖的next@13至14以修复安全漏洞?

问题背景

我项目原本用的是 next@13.5.6 和 next-drupal@1.6.0,package.json 配置如下:

"dependencies": {
  "next": "^13",
  "next-drupal": "^1.6.0",
}

因为 next@13 存在安全漏洞且 next@14 已修复该问题,我执行 npm install next@14.2.3 将主依赖的 next 升级到了 ^14.2.3,更新后的 package.json 是这样:

"dependencies": {
  "next": "^14.2.3",
  "next-drupal": "^1.6.0",
}

但运行 npm audit fix 时发现,next-drupal 自身的嵌套依赖(node_modules/next-drupal/node_modules/next)仍使用 next@13.5.6,存在高风险漏洞:

next  >=13.4.0 <14.1.1
Severity: high
Next.js Server-Side Request Forgery in Server Actions
fix available via `npm audit fix`
node_modules/next-drupal/node_modules/next

在 package-lock.json 中也能查到该子依赖的版本为13.5.6,现在需要把这个嵌套的 next 升级到14版本以修复漏洞,该怎么做?

解决办法

方法一:用 npm overrides 强制替换子依赖版本

直接在项目的 package.json 中添加 overrides 字段,强制让 next-drupal 使用根目录指定的 next@14.2.3:

{
  "dependencies": {
    "next": "^14.2.3",
    "next-drupal": "^1.6.0"
  },
  "overrides": {
    "next-drupal": {
      "next": "$next"
    }
  }
}

添加完成后执行以下命令重新安装依赖:

npm install

$next 会自动引用根目录中指定的 next 版本,从而替换掉 next-drupal 嵌套的旧版 next。

方法二:升级 next-drupal 到兼容 next@14 的版本

先确认 next-drupal 是否有支持 next@14 的新版本,若有则直接升级:

npm install next-drupal@latest

升级后重新检查依赖,新版本的 next-drupal 通常已经适配了 next@14,不会再嵌套旧版 next。

方法三:清理依赖后重新安装

如果上述方法无效,可尝试删除本地依赖文件和锁文件,让 npm 重新解析依赖树:

# 删除 node_modules 和 package-lock.json
rm -rf node_modules package-lock.json
# 重新安装所有依赖
npm install

这种方式会让 npm 优先使用根目录指定的 next@14.2.3,避免嵌套安装旧版本。

注意点

  • 使用 overrides 前,建议确认 next-drupal@1.6.0 与 next@14.2.3 不存在兼容性问题,若运行出现报错,优先选择升级 next-drupal。
  • 操作完成后,记得运行 npm audit 验证漏洞是否已修复。

内容的提问来源于stack exchange,提问作者Ricardo Castañeda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:40:07