Ionic serve运行时出现StaticInjectionError[{provide:PlatformLocation}]错误求助
StaticInjectionError(PlatformLocation相关)的问题 我之前处理过类似的Angular依赖注入异常,针对你遇到的这个StaticInjectionError[{provide:PlatformLocation, useClass:BrowserPlatformLocation}]: 'deps' required报错,给你几个可行的排查方向:
检查核心模块导入是否正确
首先,Angular的BrowserModule(或BrowserAnimationsModule,如果用到动画)会自动帮我们配置好PlatformLocation的依赖,不需要手动去声明。你打开app.module.ts,确认imports数组里已经包含了对应的模块:import { BrowserModule } from '@angular/platform-browser'; // 要是项目用了动画,记得加上这个 // import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; @NgModule({ imports: [ BrowserModule, // BrowserAnimationsModule, // 其他你的项目模块... ], // ...其他配置 }) export class AppModule { }千万别自己在
providers里手动写{provide: PlatformLocation, useClass: BrowserPlatformLocation},这会覆盖Angular的默认配置,导致缺少必要的依赖项。清理缓存,重新构建项目
缓存的旧构建文件经常会搞出这种奇怪的问题,你可以按顺序执行这些命令彻底清理后重启:ionic cache clean npm cache clean --force rm -rf node_modules rm package-lock.json npm install ionic serve确认Ionic和Angular版本兼容
版本不匹配也可能引发这类底层依赖问题。你跑一下ionic info看看当前的版本信息,对照Ionic官方文档确认你的Angular版本和Ionic版本是兼容的。如果版本差得比较多,考虑升级或者降级到稳定的兼容组合。排查自定义服务/模块的注入配置
如果你在自己写的服务或者模块里手动注入了PlatformLocation,仔细检查一下注入的方式是否正确。确保没有错误地覆盖了它的默认提供配置。
要是以上方法都没解决,你可以试试新建一个空白的Ionic项目,对比一下两个项目的app.module.ts和核心配置文件,看看是不是哪里漏了关键的模块或者配置项。
内容的提问来源于stack exchange,提问作者K. Obrecht

