私は小さなReact)でアプリケーションを構築しましたcreate-react-app、それはローカルサーバーから正常に実行されますnpm start
を実行した後、これまでのところOK。
ただし、npm run build
を実行すると、プロセスは正しく実行されるように見えます(バンドルされたjsファイルとindex.htmlファイルを含むビルドフォルダーが作成されます)が、ブラウザーでindex.htmlを開くと何もレンダリングされません。私は何が欠けていますか?
さておき:また、リモートサーバーにアップロードしようとしましたが、URLにアクセスするとブラウザが戻ってきました...
禁止:このサーバーにアクセスする権限がありません。
...誰かがこれを解決する方法を知っているなら、私もそれを感謝します。
ただし、npm run buildを実行すると、プロセスは正しく実行されるように見えます(バンドルされたjsファイルとhtml.indexファイルを含むビルドフォルダーが作成されます)が、ブラウザーでindex.htmlを開くと何もレンダリングされません。私は何が欠けていますか?
npm run build
を実行すると、関連する指示が出力されます。
index.html
を開くことはできません。これは静的ファイルサーバーで提供されるであるためです。
これは、ほとんどのReactアプリがクライアント側のルーティングを使用しており、file://
URLを使用してこれを行うことができないためです。
本番環境では、Nginx、Apache、Node(例:Express)、またはその他のサーバーを使用して静的アセットを提供できます。サイドルーティングでは、index.html
だけでなく、/*
などの未知のリクエストに対して/
を提供します。
開発中、これにはpushstate-server
を使用できます。クライアント側のルーティングでうまく機能します。これは、印刷された指示書で行うべきことをまさに示しています。
また、リモートサーバーにアップロードしようとしましたが、URLにアクセスすると、ブラウザーはForbiddenで戻ってきました。このサーバーにアクセスする権限がありません。
build
フォルダー自体ではなく、build
フォルダーのコンテンツをアップロードする必要があります。そうしないと、サーバーはindex.html
内にあるためbuild/index.html
を見つけることができず、失敗します。サーバーがトップレベルindex.html
を検出しない場合、デフォルトで提供されるファイルの設定に関するサーバーのドキュメントを参照してください。
ここでは、2つの可能な方法でこの問題を解決できます。
1.ルーティング履歴をbrowserHistoryではなく「hashHistory」に変更します
<Router history={hashHistory} >
<Route path="/home" component={Home} />
<Route path="/aboutus" component={AboutUs} />
</Router>
次のコマンドを使用してアプリをビルドします
Sudo npm run build
次に、ビルドフォルダーをvar/www /フォルダーに配置します。これで、各URLに#タグを追加することで、アプリケーションは正常に動作します。のような
localhost /#/ home localhost /#/ aboutus
解決策2:browserHistoryを使用して#タグがない場合、
ルーターに履歴= {browserHistory}を設定し、Sudo npm run buildを使用してビルドします。
404が見つからないページを解決するには、「conf」ファイルを作成する必要があります。confファイルは次のようになります。
ターミナルを開き、以下のコマンドを入力します
cd/etc/Apache2/sites-available ls nano sample.conf以下の内容を追加します。
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName 0.0.0.0
ServerAlias 0.0.0.0
DocumentRoot /var/www/html/
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
<Directory "/var/www/html/">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
次のコマンドを使用して、sample.confファイルを有効にする必要があります。
cd /etc/Apache2/sites-available
Sudo a2ensite sample.conf
次に、SudoサービスApache2のリロードまたは再起動を使用して、Apacheサーバーをリロードするように求められます
次に、localhost/buildフォルダーを開き、以下の内容の.htaccessファイルを追加します。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ / [L,QSA]
これでアプリは正常に動作しています。
注:0.0.0.0 ipをローカルIPアドレスに変更します。
他の人の役に立つことを願っています。
「Webサーバーfor Chrome」拡張機能は非常に使いやすいです。それをインストールし、ディレクトリを〜/ my-react-app/build /に設定します
cd
をビルドフォルダーに、python -m SimpleHTTPServer 8080
ポート8080でサーバーを起動するには、localhost:8080/index.html
ブラウザで。私は同じコマンドを実行しようとしましたが、反応するアプリも白い画面を表示していました。メインのjsファイルはファイルへの相対パスを取得し、新しいブラウザでjsファイルを開くとエラーが表示されました。「あなたのファイルが見つかりませんでした」.
index.htmlをクリックしてプロダクションビルドを実行することはできません。以下のようにスクリプトを変更する必要があります。
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"deploy": "serve -s build"
}
npm run-script buildを実行した後、npm run-script deployを実行すると、このようなものが得られます。これは、本番ビルドをロードできる場所です。
npm install -gは、npm run-script deployを実行する前に機能します。
https://www.taniarascia.com/getting-started-with-react/ および最終スクリプトはGitHubにあります。
npm run build->は、index.htmlと静的フォルダーを含むフォルダービルドを作成します。 index.htmlをクリックするだけで、新しいブラウザのタブで開きます。ただし、空白ページのみが表示されます。どうして?動作させるにはサーバーが必要だからです。
解決策:
ファイルを他のフォルダーに移動します。 VC Code。index.htmlを開き、右クリック-> select:ライブサーバーで開く。関連するIPアドレスとポートを使用してブラウザーで新しいタブを開きます。
または、xamppを使用してlocalhostで実行できます。
XAMPPサーバーを開きます。ローカルホストに配置します。そして、それは機能しなければなりません。
create-react-app
でアプリケーションをビルドした後 create-react-app
コマンドを実行npm run build
その後、コマンドを実行npm install -g serve
&最後にserve -s build
より詳細な情報は、ここから見つけることができます create-react-app-deployment
index.htmlファイルを開きます。端近くまでスクロールすると、表示されます
<script src="/static/js/2.b5125f99.chunk.js"></script><script src="/static/js/main.fcdfb32d.chunk.js"></script></body></html>
2つのsrc属性の前にドットを追加するだけです:
<script src="./static/js/2.b5125f99.chunk.js"></script><script src="./static/js/main.fcdfb32d.chunk.js"></script></body></html>
また、スタイルがある場合は、表示される最初の近くでスクロールする必要があります。
<link href="/static/css/main.1eabf3ab.chunk.css" rel="stylesheet">
また、href属性の前にドットを配置します
<link href="./static/css/main.1eabf3ab.chunk.css" rel="stylesheet">
注:ファイル名は同じである場合とそうでない場合があります
また、サーバーを使用しているときにこれを元に戻すか、npm run buildを再度実行してください(あなたがしないとどうなるかわかりません)