シンプル・エクスプレス・サーバが提供するReactアプリケーションがあります。 Reactアプリケーションは、ルートディレクトリ(server.js
ファイルもあります)のdist
というディレクトリにwebpack
です。 distフォルダにはindex.html
エントリポイント、main.min.js
JavaScriptバンドル、その他すべての静的アセット(CSS、画像など)が含まれます。レスキュー・ルータをExpressサーバと併用する
などのサイトのルートディレクトリにアクセスすると、index.html
が配信され、JSバンドルが読み込まれ、他のすべてのアセットが正常に検出されます。アプリは、react-router
を使用して、ボタンのクリックによって細かくナビゲートし、localhost:3000/feature
につながるリンクが正常に機能します。
私は手動でlocalhost:3000/feature
にアドレスバーや種類に入る場合は、サーバが期待通りindex.html
を与えるが、またmain.min.js
の代わりにindex.html
を提供しています。これは、高速サーバーのワイルドカード・ルートが、index.html
を戻すようにマップされているためです。これは私がいくつかの記事でそれを見た方法ですが、このケースが考慮されているかどうかはわかりません。ここで
は、関連するサーバのコードの抜粋です:
app.use(express.static(path.join(__dirname)));
app.get('*', function response(req, res) {
res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});
これは、サーバーのルーティングを定義するものです。これを行うより良い方法は、手動のアドレス変更を可能にするでしょうか?それは場合に役立ちます
は、ここに私のファイル構造です:index.html
の
|-root
|-server.js
|-webpack.config.js
|-dist/
|-main.min.js
|-index.html
|-a2cea76fae187add3c974dcacf446eab.jpg
|-...etc
内容:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div id="root"><!-- React app --></div>
<script src="dist/main-631cea2c7e308b1dfb26.min.js"></script>
</body>
</html>
おそらくあなたは[この](https://github.com/ReactTraining/react-router/blob/master/docs/guides/ServerRendering.md) –
@IslamIbakaevはこれが唯一の解決策である必要がありますか?私はできればサーバ側のレンダリング(今のところ)を避けたい。 –
私は実際に "サーバー側の反応"を実行せずに反応ルータで設定したエクスプレス・マッチ・ルートを他のソリューションでは知りません –