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

执行yarn install遇Node版本不兼容,求助查找glob@11.0.0依赖来源

解决yarn install时glob@11.0.0与Node版本不兼容问题

问题背景

两个月前执行yarn install一切正常,如今执行该命令时出现Node版本与glob@11.0.0不兼容的报错,且未修改过package.json中的依赖配置。

报错信息

verbose 33.786740568 正在向 "https://registry.yarnpkg.com/os-homedir" 发送 "GET" 请求。
verbose 33.822862421 请求 "https://registry.yarnpkg.com/os-homedir" 已完成,状态码 200。
verbose 33.823871025 正在向 "https://registry.yarnpkg.com/gulp-less" 发送 "GET" 请求。
verbose 33.918661822 请求 "https://registry.yarnpkg.com/gulp-less" 已完成,状态码 200。
verbose 33.926033135 正在向 "https://registry.yarnpkg.com/gulp-postcss" 发送 "GET" 请求。
verbose 33.994670505 请求 "https://registry.yarnpkg.com/gulp-postcss" 已完成,状态码 200。
[2/4] 拉取包中...
error glob@11.0.0: 模块与当前 "node" 引擎不兼容。预期版本为 "20 || >=22",当前版本为 "16.20.2"
verbose 36.305657124 错误:找到不兼容的模块。
    at MessageError.ExtendableBuiltin (/usr/local/lib/node_modules/yarn/lib/cli.js:721:66)
    at new MessageError (/usr/local/lib/node_modules/yarn/lib/cli.js:750:123)
    at checkOne (/usr/local/lib/node_modules/yarn/lib/cli.js:47866:11)
    at Object.check (/usr/local/lib/node_modules/yarn/lib/cli.js:47885:5)
    at /usr/local/lib/node_modules/yarn/lib/cli.js:7351:73
    at Generator.next (<anonymous>)
    at step (/usr/local/lib/node_modules/yarn/lib/cli.js:310:30)
    at /usr/local/lib/node_modules/yarn/lib/cli.js:321:13
error 找到不兼容的模块。
info 访问 https://yarnpkg.com/en/docs/cli/install 获取该命令的文档说明。

当前package.json配置

{
<some text>
  "dependencies": {
    "@rjsf/antd": "^3.2.0",
    "@rjsf/core": "^3.2.0",
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "antd": "^4.16.10",
    "antd-theme-webpack-plugin": "^1.3.9",
    "axios": "^0.21.1",
    "babel-plugin-import": "^1.13.3",
    "eslint-config-airbnb": "^18.2.1",
    "eslint-plugin-export": "^0.1.2",
    "jsencrypt": "^3.2.1",
    "moment": "^2.29.1",
    "prop-types": "^15.7.2",
    "react": "^17.0.2",
    "react-css-theme-switcher": "^0.3.0",
    "react-dom": "^17.0.2",
    "react-icons": "4.8.0",
    "react-iframe": "^1.8.0",
    "react-page-visibility": "^6.4.0",
    "react-redux": "^7.2.4",
    "react-responsive": "^9.0.0-beta.3",
    "react-router-dom": "^5.2.0",
    "react-scripts": "4.0.3",
    "react-timing-hooks": "^2.0.0",
    "redux": "^4.1.1",
    "redux-thunk": "^2.3.0",
    "web-vitals": "^1.0.1"
  },
  "scripts": {
<some text>
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
<some text>
  },
  "devDependencies": {
    "autoprefixer": "^9.8.4",
    "gulp": "^4.0.2",
    "gulp-csso": "^4.0.1",
    "gulp-debug": "^4.0.0",
    "gulp-less": "5.0.0",
    "gulp-postcss": "^8.0.0",
    "less-plugin-npm-import": "^2.1.0"
  }
}

已尝试但无效的方案

  • 将Node版本切换至20,出现大量依赖弃用提示
  • 重新生成yarn.lock,仍触发版本不兼容报错
  • 使用--ignore-engines参数执行,后续出现Babel版本不兼容报错:
./src/index.js

错误:[BABEL] /app/src/index.js: 需要 Babel "^7.16.0",但当前加载的版本是 "7.12.3"。如果你确认已安装兼容版本的 @babel/core,那很可能是构建过程中某个环节加载了错误的版本。检查该错误的堆栈跟踪,找到第一个未提及 "@babel/core" 或 "babel-core" 的条目,查看是哪个程序调用了 Babel。(处理 "/app/node_modules/babel-preset-react-app/index.js$0$2" 时)

解决方案

第一步:定位依赖glob@11.0.0的组件

执行以下命令查看glob@11.0.0的依赖树,明确是哪个顶层包间接引入了它:

yarn why glob@11.0.0

命令会输出完整的依赖链路,帮你找到根源包。

第二步:锁定兼容的glob版本

在package.json中添加resolutions字段,强制指定glob使用兼容Node 16的版本(比如glob@10.x系列,该版本支持Node >=16):

{
  // ... 其他原有配置
  "resolutions": {
    "glob": "^10.3.10"
  }
}

第三步:重新安装依赖

执行以下命令让yarn应用版本锁定规则,完成依赖安装:

yarn install

此方案既解决了glob版本与Node 16的兼容性问题,又避免了升级Node带来的依赖弃用风险,同时不会触发后续的Babel版本冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:55:54