2017-12-12 14 views
1

を使用してJSONファイルを呼び出して、私は、ローカルのJSONファイルを持っているし、HTTP GET method.Theアプリケーションは、コンソール(404)上の例外をスローから読み取るしようとしています。 webpackを使用すると、angular-cli.jsonのアセット/データは利用できません。私はwebpackを使用しています。 jsonファイルをどこに置いて読み込めるか知っていますか?角度4 404エラー - HTTPのGETメソッドの角4 WebPACKの

import {IProduct} from './product.model'; 

@Injectable() 
export class ProductService { 
    private productUrl = require('./product.json'); 

    constructor(private _http: HttpClient) { } 

    getProducts(): Observable<IProduct[]> { 
     return this._http.get<IProduct[]>(this.productUrl) 
      .do((data) => console.log('products: ' + JSON.stringify(data))) 
      .catch(this.handleError); 
    } 
} 

ここで、product.jsonはProductServiceの同じディレクトリにあります。

+1

あなたはあなたのコードを共有することはできますか? –

+0

あなたが使用しようとしているパスは何ですか?また、あなたの構造にファイルがどこにありますか?私はコードで私のポストを更新しました – Alex

+0

は私が資産フォルダを持っていない – fairlie

答えて

0

角度CLI


を使用すると、私の知る限り、これを行うための一つの方法がある場合。

  1. ファイル(例:file.json)をassetsフォルダに保存します。あなたの角度-cli.jsonファイルで

  2. 、ノードに移動:アプリ>資産とその名を確認し、「資産」が存在します。今

アクセス:

http://localhost:[PORT_NUMBER]/assets/file.json

ところで、あなたのWebアプリは、APIではありません。 jsonファイルを消費する代わりに、サービス内に変数を作成します。

例:WebPACKので

import { Injectable } from "@angular/core"; 

@Injectable() 
export class DataMockService { 
    public GetObjects(): any { 
     return { 
      name: "nilay", ... 
     }; 
    } 
} 
+0

を使用してい切り取ら。アセットフォルダは、angle-cli.jsonファイルを使用する場合にのみ使用できます。私はwebpackを使用しています。 モジュールが見つかりません:エラー: – fairlie

0

、あなたはJSONファイルを保存しているに関係なく、あなたはどこからでもアクセスが、常にsrcフォルダから始まることができます。

だから、次のようになります。

return this._http.get<IProduct[]>('src/app/services/product.json') 

すなわちだけsrcから始まるあなたのJSONファイルへの完全なパスをマーク。

+0

それはまだ、動作しません解決できません「のsrc /メイン/ webappの/アプリ/レイアウト/製品/ products.json」 – fairlie

+0

あなたがチェックしていると、二重パスが正しいことを確認? – Alex

+0

パスが正しい場合:)、試してみて、 'のwebapp /アプリから起動するので、その後、あなたの構造は通常よりも少し異なっているようです....' – Alex