【问题标题】:Ionic Cannot find module '../providers/auth-service/auth-service'离子找不到模块'../providers/auth-service/auth-service'
【发布时间】:2017-05-28 22:54:06
【问题描述】:

我正在尝试在 ionic angular 3.3.0 中创建登录/注册。 我收到错误找不到模块'../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 程序结构:

【问题讨论】:

  • 你能附上你的项目结构的截图吗?
  • 我添加了 login.ts
  • 我添加了 login.ts 和 auth-service.ts
  • 我想看的是你的文件夹结构,看看导入路径是否正确。
  • 我添加了程序结构截图

标签: angular authentication ionic-framework ionic2 ionic3


【解决方案1】:

根据您的项目结构,您的 login.ts 位于登录文件夹内,login 文件夹位于 pages 文件夹内。

所以为了到达providers文件夹,你需要写

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

这应该会将您从两个应该可以解决问题的文件夹中移出。

【讨论】:

    【解决方案2】:

    如果您使用 VS Code,请安装名为“Typescript Hero”和“Typescript Toolbox”的插件,将帮助您进行导入。

    实际上,当您将光标放在导入的元素上时,“Typescript Toolbox”会显示一个灯泡,您可以从灯泡中选择导入。很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2021-07-02
      • 2021-10-15
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      相关资源
      最近更新 更多