Ionic6使用@ionic/storage 2.1.3报NullInjectorError无Storage提供者求助
你当前的问题核心是Angular的NgModule类没有OnInit生命周期钩子,你写在AppModule里的初始化逻辑永远不会执行,同时在AppModule构造阶段注入未初始化的Storage会触发依赖注入报错,可按以下步骤修复:
- 清理AppModule中的无效代码,修改后的
app.module.ts代码如下:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; import { IonicStorageModule } from '@ionic/storage' import {HttpClientModule} from '@angular/common/http' @NgModule({ declarations: [AppComponent], entryComponents: [], imports: [ BrowserModule, HttpClientModule, IonicModule.forRoot(), // 可自定义存储配置,不需要的话留空也可正常运行 IonicStorageModule.forRoot({ name: '__localStorage', driverOrder: ['indexeddb', 'sqlite', 'websql'] }), AppRoutingModule ], providers: [ { provide: RouteReuseStrategy, useClass: IonicRouteStrategy } ], bootstrap: [AppComponent], }) export class AppModule {}
- 在AppComponent中完成Storage的初始化,示例代码:
import { Component, OnInit } from '@angular/core'; import { Storage } from '@ionic/storage'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.scss'], }) export class AppComponent implements OnInit { constructor(private storage: Storage) {} async ngOnInit() { // 执行Storage初始化,完成后即可正常调用读写方法 await this.storage.create(); } }
- 如需在真机使用SQLite提升存储稳定性,安装对应依赖:
# 安装SQLite依赖 npm install cordova-sqlite-storage # Capacitor项目执行同步 npx cap sync # Cordova项目执行同步 ionic cordova prepare
- 确认所有用到Storage的文件中,都是从
@ionic/storage导入的Storage类,不要和其他同名类混淆。
内容的提问来源于stack exchange,提问作者Pedro Azevedo
相关产品推荐
相关产品推荐

