2017-12-20 7 views
0

は、私はすでに同様の質問で回答を探してみましたが、私は4角に新しいですし、仮想的な本屋のための単純な角度フロントエンドをしようとして問題にエラー404は

を解決することができませんでした。 books.jsonとして、アプリケーションにハードコードされたデータセットが存在します。

Error showing in the ChromeSo, Console

そしてここでは、プロジェクトディレクトリとコードのスクリーンショットです:しかし、問題は、私は次のエラーを取得することを実行しようとするたびにです。

import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import { IBook } from './book'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class BookService { 

    constructor(private _http: Http){} 

    getBooks(): Observable<IBook[]> { 
    return this._http 
    .get("api/books/books.json") 
    .map((response : Response) => { 
     return response.json() as IBook[]; 
    }); 
    } 
} 
+0

を、以下のようなあなたのassets配列に"api"を置きます。リソース 'api/books/books.json'は単純に存在しません。パスを確認してください。 – Eric

+0

index.htmlファイルに関する場所を指定する必要はありませんか? – Darpanjbora

+0

**いいえ!**ほとんどのファイルは処理され、 'www /'フォルダに移動さ​​れます。 'assets /'フォルダの内容は単に 'www /'にコピーされるので、 '.json'ファイルを置くのに最適です。 '.json'を' assets/'に移動すると、' assets/api/books/books.json'でアクセスする必要があります。 – Eric

答えて

2
rootフォルダの下に、あなたの apiフォルダを移動

enter image description here

は、ここに私のbook.service.tsコードです。この場合、book-store

問題はコードにありませんでした。そのJSONファイルへのパスを見つけることについては

それとも

あなたはangular-cli.json

"assets": [ 
    "assets", 
    "favicon.ico", 
    "api" 
], 
+2

またはそれ以上の方。これが資産であると思われるので、 'src/assets /'に移動してください。 – Eric

+0

私はそれをやってみました。しかし、まだ同じエラーが発生しています。 – Darpanjbora

+0

@Darpanjbora更新の回答を確認 –

3

一つのオプションでassetsapisrcフォルダの下のファイルを維持して追加することができます無効に移動することですjsonファイルはsrc/assetsフォルダにあります。よりよい解決策はangular-cli.jsonを編集し、apps.assetsにフォルダ(ルート)を追加することです:

"assets": [ 
    "api", 
    "assets", 
    "favicon.ico" 
] 

JSONファイルにアクセスする必要があり、あなたが任意のコードを変更する必要はありません。アプリケーションの提供をやめて、ng serveを再度実行してください。

+0

それをやろうとしましたが、同じエラーが発生しています。 index.htmlファイルに関する場所を指定する必要はありませんか? – Darpanjbora

+0

私の悪いことに、 'api'フォルダを移動しないでください。それを 'src'の中に入れてください。私がローカルで作業しているので、これはうまくいくはずです。アプリケーションの提供をやめ、 'ng serve'をもう一度実行することを忘れないでください。 – JasonK

+0

ありがとうございました。それは問題を解決しました。 – Darpanjbora

1

あなたのフォルダ構造は大丈夫です。問題はあなたのサーバがapiフォルダについて何も知らないということです。あなたの.angular-cli.jsonでは、これは角とは何の関係もありません

... 
"assets": [ 
    "assets", 
    "favicon.ico", 
    "api" 
], 
...