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

React项目启动/构建报错:Module not found: Default condition should be last one

解决"Module not found: Error: Default condition should be last one"问题

问题原因

这个错误源于项目依赖包(比如firebase或@react-query-firebase/auth)的package.json文件中,exports字段的条件顺序不符合Node.js模块解析规范——默认条件("default")没有放在条件列表的末尾,而React Scripts 5.x搭配Node 16.x的webpack环境对该规范校验严格,导致模块解析失败。

解决方案

方案1:锁定兼容版本的依赖包

调整firebase及相关包版本

在package.json中指定已知兼容的版本(比如firebase@9.23.0、@react-query-firebase/auth@1.0.0),避免使用最新可能引入规范冲突的版本:

{
  "dependencies": {
    "firebase": "9.23.0",
    "@react-query-firebase/auth": "1.0.0"
  }
}

执行以下命令重新安装依赖:

rm -rf node_modules package-lock.json
npm install

方案2:用react-app-rewired修改webpack配置(临时兼容)

如果不想调整依赖版本,可通过react-app-rewired覆盖默认webpack配置,放宽对exports条件顺序的校验:

  1. 安装依赖工具:
npm install react-app-rewired --save-dev
  1. 在项目根目录创建config-overrides.js文件,添加配置:
module.exports = function override(config, env) {
  config.resolve = {
    ...config.resolve,
    mainFields: ['browser', 'module', 'main'],
    conditionNames: ['browser', 'module', 'main']
  };
  return config;
};
  1. 修改package.json中的启动脚本:
{
  "scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "test": "react-app-rewired test"
  }
}
  1. 重新启动项目:
npm run start

方案3:升级Node.js版本(可选)

Node 18+对exports条件顺序的兼容性更好,若项目允许,可升级到Node 18.x LTS版本,大概率直接解决该问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:15:26