我試圖讓我的Firebase數據庫連接到我的Angular 2應用程序,我已經在過去幾次沒有任何問題。出於某種原因,我得到這個錯誤Angularfire2在Angular2中導致SystemJS錯誤
Error: Can't resolve all parameters for AppService: (?).
at Error (native)
at syntaxError (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:1513:34)
at CompileMetadataResolver._getDependenciesMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14790:35)
at CompileMetadataResolver._getTypeMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14658:26)
at CompileMetadataResolver._getInjectableMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14644:21)
at CompileMetadataResolver.getProviderMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14933:40)
at eval (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14863:49)
at Array.forEach (native)
at CompileMetadataResolver._getProvidersMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14824:19)
at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14255:30)
Evaluating http://localhost:3000/main.js
Error loading http://localhost:3000/main.js
at Error (native)
at syntaxError (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:1513:34)
at CompileMetadataResolver._getDependenciesMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14790:35)
at CompileMetadataResolver._getTypeMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14658:26)
at CompileMetadataResolver._getInjectableMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14644:21)
at CompileMetadataResolver.getProviderMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14933:40)
at eval (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14863:49)
at Array.forEach (native)
at CompileMetadataResolver._getProvidersMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14824:19)
at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (http://localhost:3000/node_modules/@angular/compiler/bundles/compiler.umd.js:14255:30)
Evaluating http://localhost:3000/main.js
Error loading http://localhost:3000/main.js
起初,應用程序將不會在所有的工作,然後我碰到這個 https://github.com/angular/angularfire2/pull/1041
附帶的修復他們給了曾經爲angularfire
部分,而擴展all.umd.js
我的angularfire
文件夾中的文件只有umd.js
版本,所以我進行了修改以適應我所擁有的文件,現在我卡在當前錯誤中。
下面是我的文件看起來像
的package.json
{
"name": "optiq_vision_splash_page",
"version": "1.0.0",
"description": "QuickStart package.json from the documentation, supplemented with testing support",
"scripts": {
"build": "tsc -p src/",
"build:watch": "tsc -p src/ -w",
"build:e2e": "tsc -p e2e/",
"serve": "lite-server -c=bs-config.json",
"serve:e2e": "lite-server -c=bs-config.e2e.json",
"prestart": "npm run build",
"start": "concurrently \"npm run build:watch\" \"npm run serve\"",
"pree2e": "npm run build:e2e",
"e2e": "concurrently \"npm run serve:e2e\" \"npm run protractor\" --kill-others --success first",
"preprotractor": "webdriver-manager update",
"protractor": "protractor protractor.config.js",
"pretest": "npm run build",
"test": "concurrently \"npm run build:watch\" \"karma start karma.conf.js\"",
"pretest:once": "npm run build",
"test:once": "karma start karma.conf.js --single-run",
"lint": "tslint ./src/**/*.ts -t verbose"
},
"keywords": [],
"author": "",
"license": "MIT",
"dependencies": {
"@angular/common": "~4.0.0",
"@angular/compiler": "~4.0.0",
"@angular/core": "~4.0.0",
"@angular/forms": "~4.0.0",
"@angular/http": "~4.0.0",
"@angular/platform-browser": "~4.0.0",
"@angular/platform-browser-dynamic": "~4.0.0",
"@angular/router": "~4.0.0",
"@types/node": "^6.0.87",
"angular-in-memory-web-api": "~0.3.0",
"angularfire2": "^4.0.0-rc.1",
"core-js": "^2.4.1",
"firebase": "^4.2.0",
"rxjs": "5.0.1",
"systemjs": "0.19.40",
"zone.js": "^0.8.4"
},
"devDependencies": {
"concurrently": "^3.2.0",
"lite-server": "^2.2.2",
"typescript": "~2.1.0",
"canonical-path": "0.0.2",
"tslint": "^3.15.1",
"lodash": "^4.16.4",
"jasmine-core": "~2.4.1",
"karma": "^1.3.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~4.0.14",
"rimraf": "^2.5.4",
"@types/node": "^6.0.46",
"@types/jasmine": "2.5.36"
},
"repository": {}
}
systemjs.config.js
/**
* System configuration for Angular samples
* Adjust as necessary for your application needs.
*/
(function (global) {
System.config({
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
// our app is within the app folder
'app': 'app',
// angular bundles
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
'@angular/router': 'npm:@angular/router/bundles/router.umd.js',
'@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
// other libraries
'rxjs': 'npm:rxjs',
'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
'angularfire2' : 'npm:angularfire2/bundles/angularfire2.umd.js',
'angularfire2/database' : 'npm:angularfire2/bundles/angularfire2.umd.js',
'angularfire2/auth' : 'npm:angularfire2/bundles/angularfire2.umd.js',
'firebase': 'npm:firebase/firebase.js',
'firebase/app': 'npm:firebase/firebase.js',
'firebase/database': 'npm:firebase/firebase.js',
'firebase/auth': 'npm:firebase/firebase.js'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: {
defaultExtension: 'js',
meta: {
'./*.js': {
loader: 'systemjs-angular-loader.js'
},
firebase : {
format: 'global',
exports: 'firebase'
}
}
},
rxjs: {
defaultExtension: 'js'
}
}
});
})(this);
app.module
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule, Routes } from '@angular/router';
import { AngularFireModule } from 'angularfire2';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { IntroComponent } from './intro/intro.component';
import { LogoPage } from './logo-design/logo.component';
import { AssetPage } from './asset-design/asset.component';
import { CollateralPage } from './collateral-design/collateral.component';
export const firebaseConfig ={
apiKey: "blah",
authDomain: "blah",
databaseURL: "blah",
projectId: "blah",
storageBucket: "blah",
messagingSenderId: "blah"
};
@NgModule({
declarations: [
AppComponent,
IntroComponent,
LogoPage, AssetPage, CollateralPage
],
imports: [
BrowserModule,
ReactiveFormsModule,
HttpModule,
AppRoutingModule,
AngularFireModule.initializeApp(firebaseConfig)
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
app.service
import { Injectable,
Inject } from '@angular/core';
import { Response } from '@angular/http';
import { Observable } from 'rxjs/RX';
import { Link } from './links-interface';
import { AngularFire,
FirebaseListObservable,
FirebaseObjectObservable } from 'angularfire2';
import 'rxjs/add/operator/map';
@Injectable()
export class AppService {
SampleData: FirebaseObjectObservable<any>;
constructor(private af: AngularFire){}
getData(){
this.SampleData = this.af.database.object('intro') as FirebaseObjectObservable<any>
return this.SampleData;
}
}
app.component
import { Component,
OnInit } from '@angular/core';
import { HttpModule } from '@angular/http';
import { AngularFire,
FirebaseListObservable,
FirebaseObjectObservable } from 'angularfire2';
import { AppService } from './app.service';
@Component({
moduleId: module.id,
selector: 'my-app',
templateUrl:'./app.component.html',
styleUrls: ['./app.component.css'],
providers: [ AppService ]
})
export class AppComponent implements OnInit{
Data: FirebaseObjectObservable<any>;
constructor(private _data:AppService){}
ngOnInit() {
this._data.getData().subscribe(SampleData =>{
this.Data = SampleData;
console.log(this.Data);
});
}
}
我從看system.config.js
文件,其中Angularfire2
被納入所有的人都注意到了導致同一個文件在bundles
文件夾中。我注意到與Firebase
相同。我試圖直接更改它auth
,database
等文件,但得到更多的錯誤。
我沒有升級到angular4
的原因是因爲我有Windows Vista並且無法更新節點。截至目前,我正在運行node 5.7
和npm 3.6
,所以我不知道是否可能導致問題,因爲我不得不尋找並重新安裝在我的電腦上運行的最新版本的Angular2
。當我第一次開始使用Firebase時,我沒有這麼多麻煩,所以很奇怪我無法弄清楚這一點。所有的幫助非常感謝。
請參閱https://stackoverflow.com/questions/43772474/no-provider-for-angularfiredatabase/43772497#43772497,https:// stackoverflow。COM /問題/ 43990887 /獲取-的錯誤 - 有 - 無出口成員-angularfire-authproviders-authmethod/43991333#43991333,HTTPS://stackoverflow.com/questions/43777706/angularfire2-index-has-no-出口構件-angularfire/43777940#43777940 – Pengyy