Провайдер не определен ионный - PullRequest
0 голосов
/ 05 сентября 2018

Я делаю приложение Ionic 3 для школьного проекта, и у меня проблема с загрузкой провайдера, который я использую для хранения вещей в локальном хранилище, таких как токен пользователя, настройки и другие вещи, связанные со стороной клиента

это скелет провайдера

import {Storage} from '@ionic/storage';
import {IToken, IUser} from "../../interfaces";
import {Injectable} from '@angular/core';
import {Events} from 'ionic-angular';
import {ApiProvider} from "../api/api";

@Injectable()
export class GeneralProvider {

  private static USER = 'user';
  private static TOKEN = 'token';

  constructor(private storage: Storage,
              private events: Events,
              private api: ApiProvider) {
  }

  private set(settingName: string, value: any) {
    return this.storage.set(`setting:${ settingName }`, value);
  }

  private async get(settingName: string): Promise<any> {
    return await this.storage.get(`setting:${ settingName }`)
  }

  private remove(settingName: string) {
    return this.storage.remove(`setting:${ settingName }`);
  }


  /******************************* TOKEN ******************************/

  public setToken(token: IToken):void {
    this.set(GeneralProvider.TOKEN, token);
  }

  public getToken(): Promise<IToken> {
    return this.get(GeneralProvider.TOKEN);
  }

  public clearToken():void {
    this.remove(GeneralProvider.TOKEN);
  }

  /******************************* USER ******************************/


  public setUser(user: IUser) {
    return this.set(GeneralProvider.USER, user);
  }

  public getUser(): Promise<IUser> {
    return this.get(GeneralProvider.USER);
  }

  public async isLoggedIn() {
    let user = await this.getUser();

    return user !== null;
  }

  public logout() {
    return new Promise(async (resolve) => {
      this.api.logout()
        .then(async response => {
          await this.remove(GeneralProvider.TOKEN);
          await this.remove(GeneralProvider.USER);

          this.events.publish('user:loggedout');
        })

    })
  }
}

А вот и мой app.module.ts

/* imports */

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    AddPlacePage,
    PlacePage,
    SetLocationPage,
    TabsPage,
    RegisterPage,
    SettingsPage,
    RegisterComponent,
    LoginComponent
  ],
  imports: [
    FormsModule,
    BrowserModule,
    MbscModule,
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot(),
  ],
  bootstrap: [IonicApp],
  entryComponents: [
   ...
  ],
  providers: [
    PlacesService,
    ApiProvider,
    GeneralProvider,
    ImagesProvider,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {
}

И это ошибка, которую я получаю

Uncaught ReferenceError: GeneralProvider is not defined
    at Object.a (location.ts:3)
    at Object.48 (api.ts:12)
    at __webpack_require__ (bootstrap c115de5b48ba66ac336f:54)
    at Object.61 (location.ts:3)
    at __webpack_require__ (bootstrap c115de5b48ba66ac336f:54)
    at Object.377 (main.js:138)
    at __webpack_require__ (bootstrap c115de5b48ba66ac336f:54)
    at Object.376 (main.js:52)
    at __webpack_require__ (bootstrap c115de5b48ba66ac336f:54)
    at Object.549 (app.module.ts:72)

Это то, что location.ts - это просто общий интерфейс, который определяет структуру для некоторого объекта, поэтому я очень сомневаюсь, что проблема есть. Я ломал свой мозг этим за прошедший день, и ничего не изменилось.

...