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

React应用启动时报Ajv is not a constructor错误如何解决

问题定位

报错TypeError: Ajv is not a constructor的核心原因是依赖树冲突:

  1. react-scripts@5.0.1本身已经内置了版本适配的mini-css-extract-plugin,手动在devDependencies中安装2.4.5版本后,npm会为这个手动安装的版本拉取独立的嵌套schema-utils依赖,该嵌套依赖引用的Ajv版本和项目中其他依赖提升上去的Ajv版本不兼容——嵌套的schema-utils按CommonJS规范取Ajv构造函数时,拿到的是ES Module的导出对象,无法直接用new关键字调用。
  2. scripts中配置了preinstall: npx npm-force-resolutions但没有在package.json中定义对应的resolutions字段,这个脚本执行时会无规则调整依赖安装位置,进一步加剧依赖树混乱。
可落地修复步骤
  • 先清理现有依赖和锁文件,在项目根目录执行命令:
rm -rf node_modules package-lock.json
  • 编辑package.json做两处修改:
    • 删除devDependencies下的"mini-css-extract-plugin": "2.4.5"条目,不需要手动安装这个依赖,react-scripts会自动管理适配的版本,避免版本冲突
    • 删除scripts下的"preinstall": "npx npm-force-resolutions"条目,没有配套resolutions配置时这个脚本只会破坏依赖结构
      *如果你确实需要强制锁定mini-css-extract-plugin为2.4.5版本,不要直接把包装在devDependencies,而是在package.json顶层加resolutions配置,再保留preinstall脚本即可:
    "resolutions": {
      "mini-css-extract-plugin": "2.4.5"
    }
    
  • 重新安装依赖:
npm install
  • 依赖安装完成后执行npm start启动项目,报错就会消失。

错误特征验证:从日志的触发路径/app/node_modules/mini-css-extract-plugin/node_modules/schema-utils/dist/validate.js可以确认,手动安装的mini-css-extract-plugin使用了自己嵌套的schema-utils依赖,而非项目根目录的适配版本,是典型的手动安装create-react-app内置依赖导致的版本冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:24:21