使用@angular/fire执行build/ng serve时出现模块未找到错误求助
解决@angular/fire构建报错:Module not found: Error: Default condition should be last one
问题详情
长期使用@angular/fire的AngularCrashlytics,今日起执行ng build或ng serve均失败,抛出错误:
Firebase throws Error: Module not found: Error: Default condition should be last one
AppModule按官方文档配置如下:
import { AngularFireModule } from '@angular/fire/compat'; import { AngularFireAnalyticsModule } from '@angular/fire/compat/analytics'; imports:[ AngularFireModule.initializeApp(environment.Tools.Firebase), // Firebase相关配置 AngularFireAnalyticsModule ]
环境信息:
- Angular版本(用户提供对应版本截图)
- package.json依赖版本:
"firebase": "^9.14.0","@angular/fire": "^7.4.1"
已尝试操作:
- 重新克隆项目
- 删除
node_modules后执行npm install - 升级
firebase和@angular/fire至最新版本
可行解决方案
1. 修复依赖包的exports字段顺序
该错误源于Node.js模块解析规范要求package.json的exports字段中,default条件必须放在最后。可按以下步骤处理:
- 根据错误堆栈定位到出问题的依赖包(通常是
firebase或其间接依赖) - 进入该包的
node_modules/[包名]/package.json文件,调整exports结构,将"default": ...移到对应配置组的最后。例如:"exports": { ".": { "types": "./index.d.ts", "import": "./index.mjs", "require": "./index.js", "default": "./index.js" // 确保该行在最后 } } - 修改后重新执行
ng build或ng serve
2. 锁定兼容的依赖版本
若升级最新版本仍无效,可尝试切换到已知兼容的版本组合:
- 修改package.json中的依赖:
"firebase": "9.23.0", "@angular/fire": "7.6.1" - 清理旧依赖并重新安装:
# Windows系统 rmdir /s/q node_modules && del package-lock.json && npm install # Mac/Linux系统 rm -rf node_modules package-lock.json && npm install
3. 启用Angular构建的preserveSymlinks
在angular.json中为build和serve目标添加preserveSymlinks配置:
"architect": { "build": { "options": { "preserveSymlinks": true, // 其他原有配置... } }, "serve": { "options": { "preserveSymlinks": true, // 其他原有配置... } } }
4. 清理缓存
执行以下命令清理npm和Angular缓存,避免缓存导致的异常:
npm cache clean --force ng cache clean
内容的提问来源于stack exchange,提问作者Timuçin Çiçek
相关产品推荐
相关产品推荐

