2016-04-24 3 views
3

Я пытаюсь интегрировать Firebase в мое приложение Angular 2, но я продолжаю получать эту ошибку, которая Firebase is not a constructor. Вот что я сделал:Firebase не является конструктором

  1. Установленная firebase с помощью становой
  2. Реферировано сценарий в index.html.
  3. Установка firebase окружающей среды типизации
  4. Создано Firebase обслуживание
  5. при условии, что через bootstrap()
  6. Если бы впрыскивается в компоненте

FirebaseService.ts

@Injectable() 
export class FirebaseService 
{ 
    dataRef: Firebase; 
    constructor() { 
     this.dataRef = new Firebase('https://boiling-inferno-1117.firebaseio.com/votes'); 
    } 
} 

boot.ts

bootstrap(App, [HTTP_PROVIDERS, 
    ROUTER_PROVIDERS, 
    IdentityService, 
    ApiService, 
    UrlService, 
    provide(FirebaseService, {useValue: new FirebaseService()}) 
]) 
.catch(err => console.error(err)); 

app.ts

@Component({ 
    selector: 'app', 
    templateUrl: 'app/app.html', 
    directives: [AuthRouterOutlet, ROUTER_DIRECTIVES] 
}) 
export class App {   
    constructor(private firebase:FirebaseService) 
    { 

    }   
} 

Systemjs конфигурации:

System.config({ 
    defaultJSExtensions: true, 
    map: { 
     'jquery': 'vendors/js/jquery', 
     'firebase': 'vendors/js/firebase' 
    }, 
    packages: { 
     angular2: { defaultExtension: false }, 
     rxjs: { defaultExtension: false } 
    } 
}); 

и импорта Firebase, как показано ниже:

import * as Firebase from 'firebase';

Любое предложение о том, что я могу сделать, чтобы решить эту ситуацию очень ценится.

+0

Можно ли предположить, что это: обеспечить (FirebaseService, {useValue: new FirebaseService()}) является опечаткой? Потому что вы должны использовать поставщиков и после этого принимать массив. провайдеры: [FirebaseService] –

+0

Не могли бы вы также указать конфигурацию SystemJS? И как вы импортируете класс Firebase? Благодаря! –

+0

@ R.Richards Пробовал это тоже. Такая же ошибка. – lbrahim

ответ

1

Я бы настроить Firebase таким образом:

System.config({ 
    map: { 
    firebase: '/node_modules/firebase/lib/firebase-web.js', 
    (...) 
    }, 
    (...) 
}); 

и импортировать его, как это в файле транскрипта:

import * as Firebase from 'firebase'; 

Смотрите документ о Angularfire2 для получения более подробной информации:

+0

У меня есть задача gulp, которая копирует файл 'firebase-web.js' из папки' node_modules' в каталог 'dist/vendors/js'. Таким образом, он кажется, по сути, тем же, что и вы показали. Я ошибаюсь? – lbrahim

+0

Фактически вы указываете папку, а не файл js, в конфигурацию SystemJS ;-) Вам нужно сопоставить файл js. –

+0

'vendors/js/firebase' здесь firebase - это имя файла, например firebase.js. Поскольку у меня есть 'defaultJSExtensions: true' enabled' .js', кажется, добавлен для меня. Вот почему jquery из моей конфигурации работает отлично. – lbrahim

Смежные вопросы