反応アプリを作成していますが、現時点ではwebpack-dev-server
は正常に動作します(hello worldテキストが表示されます)、しかしwebpack -pは空白ページを表示します。本番ビルドの場合chrome dev toolsの下の[ネットワーク]タブには、index.html
およびindex_bundle.js
サイズを0 Bにする(画像を参照) しかし、HTMLファイルサイズが227 B&index_bundle.js
ファイルサイズは195Kbです(画像を参照)
ローカルサーバーをセットアップせずにbrowserHistoryを使用していました。 hashHistoryに変更すると機能しました。反応ルーターのブラウザー履歴でwebpackの生産をローカルでテストするには、これを行う必要がありましたサーバーの構成:
サーバーは実際のURLを処理する準備ができている必要があります。アプリが最初に/でロードされると、おそらく動作しますが、ユーザーが移動して/ accounts/23で更新を押すと、Webサーバーは/ accounts/23にリクエストを取得します。そのURLを処理し、JavaScriptアプリケーションを応答に含めるために必要になります。
エクスプレスアプリは次のようになります。
const express = require('express')
const path = require('path')
const port = process.env.PORT || 8080
const app = express()
// serve static assets normally
app.use(express.static(__dirname + '/public'))
// handle every other route with index.html, which will contain
// a script tag to your application's JavaScript file(s).
app.get('*', function (request, response){
response.sendFile(path.resolve(__dirname, 'public', 'index.html'))
})
app.listen(port)
console.log("server started on port " + port)
そして、ブラウザ履歴でreact-routerを使用して誰かがfirebaseに展開している場合に備えて、これを行います:
{
"firebase": "<YOUR-FIREBASE-APP>",
"public": "<YOUR-PUBLIC-DIRECTORY>",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
使用する
import { HashRouter } from 'react-router-dom';
の代わりに
import { BrowserRouter} from 'react-router-dom';
あなたのルートコードでそれを置き換えることを忘れないでください
<HashRouter>
...
</HashRouter>
<BrowserRouter basename="/calendar" />
<Link to="/today"/> // renders <a href="/calendar/today">
ベース名:文字列
すべての場所のベースURL。サーバー上のサブディレクトリからアプリが提供される場合、これをサブディレクトリに設定する必要があります。適切にフォーマットされたベース名には、先行スラッシュが必要ですが、後続スラッシュは含まれません。
GitHub Pagesは、HTML5 pushState
history APIを内部で使用するルーターをサポートしていません(たとえば、React browserHistory
を使用するルーター)。 http://user.github.io/todomvc/todos/42
のようなURLの新しいページの読み込みがあります。/todos/42
はフロントエンドルートです。GitHubPagesサーバーは/todos/42
を何も知らないため404を返します。 GitHubページでホストされているプロジェクトへのルーター、ここにいくつかのソリューションがあります。
hashHistory
に切り替えることができますが、URLは長くなり、より冗長になります(たとえば、http://user.github.io/todomvc/#/todos/42?_k=yknaj
)。 詳細 React Router。index.html
ページにリダイレクトすることで、GitHubページで404を処理するようにトリックを使用することもできます。プロジェクトをデプロイする前に、build
フォルダーにリダイレクトコードを含む404.html
ファイルを追加する必要があり、index.html
にリダイレクトパラメーターを処理するコードを追加する必要があります。この手法の詳細な説明はこちらをご覧ください このガイド 。