Я делаю приложение 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
- это просто общий интерфейс, который определяет структуру для некоторого объекта, поэтому я очень сомневаюсь, что проблема есть. Я ломал свой мозг этим за прошедший день, и ничего не изменилось.