Angular项目angularfire2报错:InjectionToken未找到及元数据版本不匹配
解决AngularFire2元数据版本不匹配及InjectionToken找不到的问题
先来看你遇到的具体错误信息:
将正在解析app.module.ts中的AppModule符号
警告:在./~/angularfire2/firebase.app.module.js 3:40-54处,“@angular/core”中未找到导出的“InjectionToken”
警告:在./~/angularfire2/angularfire2.js 4:26-40处,“@angular/core”中未找到导出的“InjectionToken”
错误:模块/opt/lampp/htdocs/admin2/node_modules/angularfire2/index.d.ts的元数据版本不匹配,找到版本4,预期版本3,正在解析/opt/lampp/htdocs/admin2/src/app/app.module.ts中的AppModule符号,正在解析/opt/lampp/htdocs/admin2/sr...中的AppModule符号的内容
这个问题本质是AngularFire2版本和你当前使用的Angular版本不兼容:
- 元数据版本4对应Angular 5+的格式,而你的项目预期是版本3(适配Angular 4及以下),说明你安装的AngularFire2版本过高,适配的是Angular 5+,但你的Angular版本还停留在4.x或更早。
InjectionToken的找不到警告也印证了这一点——高版本AngularFire2依赖的Angular特性,在你当前的旧版本Angular里不存在。
下面给你两种可行的解决办法:
方案一:安装适配旧版Angular的AngularFire2(最直接)
如果不想升级Angular版本,就安装对应兼容的AngularFire2版本:
- 先卸载当前的AngularFire2:
npm uninstall angularfire2 --save - 安装适配Angular 4的指定版本:
npm install angularfire2@4.0.0-rc.1 --save - 同时安装兼容的Firebase版本:
npm install firebase@4.8.0 --save - 清理依赖缓存并重新构建项目:
Linux/macOS环境
rm -rf node_modules && npm install && ng serveWindows环境rd /s /q node_modules && npm install && ng serve
方案二:升级Angular到5+(适合允许升级项目的情况)
如果你的项目架构允许升级,也可以直接把Angular升级到5.x或更高版本,之后安装最新版的AngularFire2即可。不过升级过程中要注意其他第三方依赖的兼容性,建议先备份项目,再按照Angular官方的升级步骤操作。
内容的提问来源于stack exchange,提问作者Midhilaj
相关产品推荐
相关产品推荐

