2016-08-18 2 views
0

Я новичок в Ionic2 и впервые использовал firebase. При попытке приложения выборки входа с помощью два вышеупомянутых я получил ошибку компиляции, какОшибка компиляции приложения Ionic2 + Firebase: Ошибка TypeScript: Ошибка TS2503: Не удается найти пространство имен «firebase»

ошибка Машинописи:

TypeScript error: /ionic/devdactic-firebase22/node_modules/angularfire2/database/database.d.ts(9,29): Error TS2503: Cannot find namespace 'firebase'. TypeScript error: /ionic/devdactic-firebase22/node_modules/angularfire2/database/database.d.ts(10,31): Error TS2503: Cannot find namespace 'firebase'. TypeScript error: /ionic/devdactic-firebase22/node_modules/angularfire2/providers/auth.d.ts(15,40): Error TS2503: Cannot find namespace 'firebase'. TypeScript error: /ionic/devdactic-firebase22/node_modules/angularfire2/providers/auth.d.ts(16,52): Error TS2503: Cannot find namespace 'firebase'. TypeScript error:/ionic/devdactic-firebase22/node_modules/angularfire2/providers/auth.d.ts(16,92): Error TS2503: Cannot find namespace 'firebase'.

Я попытался с руководством по установке для AngularFire: https://github.com/angular/angularfire2/blob/master/docs/1-install-and-setup.md.

также пытался импортировать firebase в моем app.ts, как

import * as firebase from 'firebase';

до сих пор не удалось найти какое-либо решение. Что может быть причиной и как я могу ее решить?

Я использую [email protected]^2.0.0-beta.2 и [email protected]^2.4.2.

app.ts

import {Component} from '@angular/core'; 
import {Platform, ionicBootstrap} from 'ionic-angular'; 
import {StatusBar} from 'ionic-native'; 
import {LoginPage} from './pages/login/login'; 
import * as firebase from 'firebase'; 

import {FIREBASE_PROVIDERS, 
    defaultFirebase, 
    AngularFire, 
    AuthMethods, 
    AuthProviders, 
    firebaseAuthConfig} from 'angularfire2'; 


@Component({ 
    template: '<ion-nav [root]="rootPage"></ion-nav>', 
    providers: [ 
     FIREBASE_PROVIDERS, 
     // defaultFirebase('https://loginapp-a08a6.firebaseio.com/'), 
     firebaseAuthConfig({ 
      provider: AuthProviders.Password, 
      method: AuthMethods.Password 
     }) 
    ] 
}) 
export class MyApp { 
    rootPage: any = LoginPage; 

    constructor(platform: Platform) { 
    platform.ready().then(() => { 
     StatusBar.styleDefault(); 
    }); 
    var config = { 
     apiKey: "AIzaSyBU2Vqq7AjN4rlMWjyKBbXo2RVJXAR4TeM", 
     authDomain: "loginapp-a08a6.firebaseapp.com", 
     databaseURL: "https://loginapp-a08a6.firebaseio.com", 
     storageBucket: "loginapp-a08a6.appspot.com", 
     }; 
     firebase.initializeApp(config); 
    } 
} 

ionicBootstrap(MyApp); 

login.ts:

import {Component} from '@angular/core'; 
import {NavController, AlertController, LoadingController} from 'ionic-angular'; 
import {FirebaseAuth} from 'angularfire2'; 
import {HomePage} from '../home/home'; 

@Component({ 
    templateUrl: 'build/pages/login/login.html', 
}) 
export class LoginPage { 
    // public loading: Loading; 

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

    public registerUser(credentials) { 
    this.showLoading() 
    this.auth.createUser(credentials).then((authData) => { 
     let prompt = this.alertCtrl.create({ 
     title: 'Success', 
     subTitle: 'Your new Account was created!', 
     buttons: ['OK'] 
     }); 
     prompt.present(); 
    }).catch((error) => { 
     this.showError(error); 
    }); 
    } 

    public login(credentials) { 
    this.showLoading() 

    this.auth.login(credentials).then((authData) => { 
     this.nav.setRoot(HomePage); 
    }).catch((error) => { 
     this.showError(error); 
    }); 
    } 

    showLoading() { 
    var loader = this.loadingCtrl.create({ 
     content: 'Please wait...', 
     duration:3000 
    }); 
    loader.present(); 
    } 

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

ответ

0

Есть варьируя набор ответов, которые работают для такого рода проблемы. Тот, который работал для меня, был:

Вы ссылаетесь на файл с образцами Firebase 3, который входит в пакет узла angularfire2 непосредственно в вашем typings.json. Run:

  • typings install file:node_modules/angularfire2/firebase3.d.ts --save --global
    • Это сохраняет ссылку в typings.json
    • ПРИМЕЧАНИЕ: требует типизации v.1 +
  • typings install

Это поместит файлы типизирования в файле typings/.

Для других решений, проверить этот вопрос на GitHub https://github.com/angular/angularfire2/issues/234

0

В TSconfig под compilerSettings, добавьте свойство "типы" и указать "firebase" в качестве типа:

{ 
    "compilerOptions": { 
    "allowSyntheticDefaultImports": true, 
    "declaration": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "lib": [ 
     "dom", 
     "es2015" 
    ], 
    "module": "es2015", 
    "moduleResolution": "node", 
    "target": "es5", 
    "types": [ 
     "firebase" 
    ] 
    }, 
    "exclude": [ 
    "node_modules" 
    ], 
    "compileOnSave": false, 
    "atom": { 
    "rewriteTsconfig": false 
    } 
} 
Смежные вопросы