質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

8009閲覧

ローカル環境に置いたjsonファイルが読み込まれない

vankick

総合スコア22

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/05/30 02:09

ローカル環境(sr/data/data.json)にあるjsonファイルを読み込もうとしているのですが、
404エラー(Request failed with status code 404)になってしまいます。

リクエストのパスは http://localhost:8080/src/data/data.json ですが、
まさにここにjsonファイルが入っているのですが、なぜか404と言われてしまいます。

これを読み込むには、どうしたらいいのでしょうか?
今回は練習のため、asyncとawaitを使ってみようとしていました。
jsonファイルの記述にも問題はないと思われます。

import axios from 'axios'; async function getList() { try { const res = await axios('./src/data/data.json'); console.log('res', res); } catch(error) { console.log(error); } }; getList();
[ { "task" : "Watch movies", "status" : "Finished", "priority" : "Important" }, { "task" : "Read books", "status" : "Finished", "priority" : "" }, { "task" : "Brush teeth", "status" : "Finished", "priority" : "Important" }, { "task" : "Walk a dog", "status" : "Finished", "priority" : "Important" }, { "task" : "Watch YouTube", "status" : "Finished", "priority" : "" } ]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

どうしても読み込めないので、jsファイルに、外部から読み込もうとしていたdata.jsonのファイルの中身をすべてコピペしました。

投稿2019/05/31 12:09

vankick

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問者のコメント『localhost:8080 にアクセスすると、src/index.html が表示される』に従うと

URL: http://localhost:8080/

ローカルファイルのパス: src/

が対応しているのだと考えられます(index.htmlは、src/フォルダーの中から選ばれた)

だとすると

URL: http://localhost:8080/src/data/data.json

ローカルファイルのパス: src/src/data/data.json

に対応するのではないでしょうか?

==
ローカル環境(src/data/data.json)にあるjsonファイルのコピーを、
ローカル環境の src/src/data/data.json に置くとエラーが無くなりませんか?

投稿2019/05/30 05:07

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vankick

2019/05/30 06:47

srcフォルダの中にさらにsrcフォルダを作成し、その中にjsonファイルを入れてみましたが、読み込めません。他のjpgなどもimgタグでは直接読み込めないようなので、外部ファイルを読み込むためには何か特別な処理をしないといけないのかもしれません。
coco_bauer

2019/05/30 08:59

「srcフォルダの中にさらにsrcフォルダを作成し、その中にjsonファイルを入れてみました」というのは、どういうファイルパスに、何という名前のjsonファイルを置いたという事ですか? ファイルパスが正しくないという問題を解消しようとしているのですから、ファイルパスを明記してください。
vankick

2019/05/30 09:22

質問に記載したのですが、 リクエストのパスは http://localhost:8080/src/data/data.json まさにここにdata.jsonファイルが入っています。ですが、404と言われてしまいます。 (srcフォルダの中にさらにsrcフォルダを作成してみたのは、coco_bauerさんが「ローカル環境の src/src/data/data.json に置くとエラーが無くなりませんか?」とアドバイスしてくださったので、試してみました。)
guest

0

http://localhost:8080/src/data/data.json 」をダイレクトに
ブラウザにurl入力したら開けるという認識でよろしいですか?
そうなると相対パスが間違えているとかそういうレベルのは話ではないでしょうか?
あとはfetchなどで試してみるきりわけができるかもしれません

投稿2019/05/30 03:20

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vankick

2019/05/30 03:53

http://localhost:8080/src/data/data.json 」と入力すると、Cannot GET /src/data/data.json と表示されてしまいます。そもそもasync/awaitが間違っているのかもしれないです。。
yambejp

2019/05/30 03:56

単に間違ったパスにjsonファイルを置いただけでは? ちなみにローカル環境でためしているのなら portは80のままいじらないほうが 問題の切り分けになるとおもいます
vankick

2019/05/30 04:39

パスは間違えておらず、確かにsrc/data 内にjsonファイルが置いてあります。 localhost:8080 にアクセスすると、src/index.html が表示されるので(実際はdist/index.html なのに、bundleした結果そうなる)、そういう部分でも設定が必要なのかもしれません。
vankick

2019/05/30 06:44

試しに、index.jsに <img src="test.jpg">と書き、index.jsと同じ階層に test.jpg ファイルを置いてみたのですが、それでも何も表示されません。(ソースにはちゃんと <img src="test.jpg"> と表示されます)外部ファイルのパスがちゃんと表示されないようです。
coco_bauer

2019/05/30 08:57

index.jsって、JavaScriptのプログラムが入っているのですか? <img src="test.jpg">のようはHTMLタグをブラウザで表示するのなら、index.htmlなどのHTMLファイルに書かないといけません。  404エラーは「(指定されたパスに)ファイルが無いです!」というものですから、原因は誤ったファイルパスにあることは確実です。このような認識をもって、原因究明してください。
gentaro

2019/05/30 09:37

コレJavaScriptの問題じゃなくて、ローカル開発サーバー側でlocalhost:8080/srcにマップしている(と思っている)設定が間違っているんじゃ…
hentaiman

2019/05/30 10:23

Options Indexes にして確認した方が早い気が
vankick

2019/05/31 12:05

パスの指定は合っています。100%絶対にそのパスにファイルが置いてあるのですが、パスは合っているはずなのに404と表示されてしまうため、どうしてそのように認識されてしまうのか不思議に思い、質問していました。gentaroさんがご指摘いただいた通り、多分サーバーの設定か何かが間違っているのだと推測します。皆さま、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問