2017-08-24 13 views
0

Firebaseデータベースを私のAngular 2アプリに接続しようとしています。何らかの理由で私は、私は、彼らがangularfire部品しばらく拡張all.umd.jsを持っていた与えたこの https://github.com/angular/angularfire2/pull/1041Angularfire2が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 

を取得しています私の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); 
     }); 
    } 


} 

私はAngularfire2は、それらのすべてが同じファイルにつながる組み込まれているsystem.config.jsファイルを見てから気づきましたbundlesフォルダにあります。私はFirebaseと同じ気づいた。私はauthdatabaseなどのファイルに直接変更しようとしましたが、エラーが増えました。

angular4にアップグレードしていないのは、Windows Vistaがあり、ノードを更新できないためです。現時点ではnode 5.7npm 3.6を実行していますので、私のコンピュータ上で動作するAngular2の最新バージョンを見つけて再インストールする必要があったのかどうかは分かりません。私が最初にFirebaseを使い始めたとき、これはあまり問題にならなかったので、私はこのことを理解できないのは奇妙です。すべての援助は非常に高く評価されます。

+0

https://stackoverflow.com/questions/43772474/no-provider-for-angularfiredatabase/43772497#43772497、https:// stackoverflowを参照してください。com/questions/43990887/get-an-error-has-no-exported-member-angularfire-authproviders-authmethod/43991333#43991333、https://stackoverflow.com/questions/43777706/angularfire2-index-has-no- exported-member-anglefire/43777940#43777940 – Pengyy

答えて

0

AngularFire2バージョン4.0.0-rc.1です。 4.0.0-rc.2の大規模なパッケージリライトがあり、SystemJSのこの問題が修正されました。

以前のバージョンでは、深いインポートによってangularfire2/databaseangularfire2/authが解決されました。あなたがwebpackを使用していればこれは問題ありません。ただし、SystemJSユーザーにはUMDバンドルが必要です。メガUMDバンドルに各モジュールを埋め込むのではなく、パッケージを変更してUMDバンドルを定義した各モジュールのpackage.jsonを宣言しました。

関連する問題