ビルドしてReactアプリを表示すると真っ白な画面が表示される
create-react-appで開発したReactアプリを、ビルドしてブラウザで表示しようとすると、画面が真っ白になって何も表示されないことがありました。
ビルドしたReactアプリは、HTMLやCSS、JavaScriptなどから構成されるもので、ブラウザにドラッグ&ドロップするだけで表示されるものと考えておりました。
真っ白な画面が表示される原因
Chromeの開発ツールで確認してみることに。
HTMLファイルは正しく表示されており、CSSやJavaScriptが動いていない模様。
CSSとJavaScriptを読み込んでいる箇所を確認してみると
<head>
~ 省略 ~
<!-- JavaScriptの読み込み箇所 -->
<script defer="defer" src="/static/js/sample.js"></script>
<!-- CSSの読み込み箇所 -->
<link href="/static/css/sample.css" rel="stylesheet">
~ 省略 ~
</head>
ルートパスで読み込んでいるようでした。
ビルドしたReactアプリはパソコンのルートディレクトリに配置しているわけではないため、ReactアプリのJavaScript(CSS)が読み込まれず、画面が真っ白に表示されていたわけです。
真っ白な画面が表示された時の対処法
JavaScriptやCSSの読み込み先のパスの問題であるため、Reactアプリのパスを変更して対処しましょう。
構築したReactアプリのpackage.json
を編集します。
{
"name": "test", // 作成したアプリ名
"version": "0.1.0",
"private": true,
"dependencies": {
~ 以下省略 ~
“homepage”の設定を追加します。
{
"name": "test", // 作成したアプリ名
"version": "0.1.0",
"private": true,
"homepage": "./" // homepageの設定を追加
"dependencies": {
~ 以下省略 ~
“homepage”の設定を追加したら、編集内容を保存して再度Reactアプリのビルドを行います。
ビルドしたReactアプリをブラウザにドラッグ&ドロップすると、正しく表示されるようになっているはずです。
CSSとJavaScriptを読み込んでいる箇所を確認してみると
<head>
~ 省略 ~
<!-- JavaScriptの読み込み箇所 -->
<script defer="defer" src="./static/js/sample.js"></script>
<!-- CSSの読み込み箇所 -->
<link href="./static/css/sample.css" rel="stylesheet">
~ 省略 ~
</head>
package.json
で設定した”homepage”の値でパスが設定されていることを確認できます。
まとめ
ビルドしたReactアプリをブラウザにドラッグ&ドロップしても画面が真っ白にしか表示されないことがあります。
そんな時には、Reactアプリのpackage.jsonの”homepage”の値を追加してパスを設定し、再度ビルドしてからもう一度表示してみましょう。
コメント