离子无法找到模块'../providers/auth-service/auth-service'

时间:2017-05-28 09:45:31

标签: angular authentication ionic-framework ionic2 ionic3

我正在尝试在离子角3.3.0中创建Login / SignUp。 我收到错误找不到模块'../providers/auth-service/auth-service'。在login.ts文件中。请帮助!

AUTH-service.ts

       import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';

/*
  Generated class for the AuthServiceProvider provider.

  See https://angular.io/docs/ts/latest/guide/dependency-injection.html
  for more info on providers and Angular 2 DI.
*/
export class User {
  name: string;
  email: string;

  constructor(name: string, email: string) {
    this.name = name;
    this.email = email;
  }
}
@Injectable()
export class AuthServiceProvider {
  currentUser: User;
  public login(credentials) {
    if (credentials.email === null || credentials.password === null) {
      return Observable.throw("Please insert credentials");
    } else {
      return Observable.create(observer => {
        // At this point make a request to your backend to make a real check!
        let access = (credentials.password === "pass" && credentials.email === "email");
        this.currentUser = new User('ian', 'ianlikono@gmail.com');
        observer.next(access);
        observer.complete();
      });
    }
  }
 public register(credentials) {
    if (credentials.email === null || credentials.password === null) {
      return Observable.throw("Please insert credentials");
    } else {
      // At this point store the credentials to your backend!
      return Observable.create(observer => {
        observer.next(true);
        observer.complete();
      });
    }
  }
   public getUserInfo() : User {
    return this.currentUser;
   }

  public logout() {
    return Observable.create(observer => {
      this.currentUser = null;
      observer.next(true);
      observer.complete();
    });
  }
}

login.ts

import { Component } from '@angular/core';
import { NavController, AlertController, LoadingController, Loading, IonicPage } from 'ionic-angular';
import { AuthServiceProvider } from '../providers/auth-service/auth-service';

@IonicPage()
@Component({
  selector: 'page-login',
  templateUrl: 'login.html',  
})
export class LoginPage {
  loading: Loading;
  registerCredentials = { email: '', password: '' };

  constructor(private nav: NavController, private auth: AuthServiceProvider, private alertCtrl: AlertController, private loadingCtrl: LoadingController) { }

  public createAccount() {
    this.nav.push('RegisterPage');
  }

  public login() {
    this.showLoading()
    this.auth.login(this.registerCredentials).subscribe(allowed => {
      if (allowed) {        
        this.nav.setRoot('HomePage');
      } else {
        this.showError("Access Denied");
      }
    },
      error => {
        this.showError(error);
      });
  }

  showLoading() {
    this.loading = this.loadingCtrl.create({
      content: 'Please wait...',
      dismissOnPageChange: true
    });
    this.loading.present();
  }

  showError(text) {
    this.loading.dismiss();

    let alert = this.alertCtrl.create({
      title: 'Fail',
      subTitle: text,
      buttons: ['OK']
    });
    alert.present(prompt);
  }
}

ScreenShot程序结构:
ScreenShot Program structure

2 个答案:

答案 0 :(得分:12)

从您的项目结构中,您的login.ts位于登录文件夹中,login文件夹位于pages文件夹中。

因此,为了到达providers文件夹,您需要编写

'../../providers/auth-service/auth-service'

这应该会让你离开两个应该解决问题的文件夹。

答案 1 :(得分:0)

如果您使用的是VS Code,请安装名为" Typescript Hero"和" Typescript Toolbox",将帮助您进口。

实际上"打字稿工具箱"将光标聚焦在导入的元素上时,会显示一个灯泡,您可以从灯泡中选择导入。非常有用。