先日作ったReactのTodoアプリをサーバーに公開するため、npm run build
でビルドしたファイルをアップロードしたのだが、ローカルホストではうまく動作していたはずのアプリが真っ白になり何も表示されなかった。
Chromeのデベロッパーツールを確認すると以下のようなエラーが大量に発生していた。
ステータスコード404が返っているので、エラーの原因はファイルパスの問題だとすぐに分かったが、なぜこのようなことが起きたかを解説していく。
エラーの原因
今回、アップロードしたサーバー上のディレクトリはこちら。
/react-todo/
ビルドして出来上がったindex.html
内の各種ファイル読み込み先パスを見てみると、どれも/static/css/...
のようにルートパスで指定されていた。
これではreact-todo
配下のファイルを読み込むことができないので当然エラーとなる。
エラーの解決法
この問題を解決するには、パスの指定を変更する必要がある。
package.json
を開き、homepage
の設定を追記する。
今回は相対パスでの指定としたが、"/react-todo/"
でも問題ない。
ファイルを保存し再度npm run build
を実行すると、パスの指定が変更され先ほどの404エラーは全て解決されているはずだ。