1

私はルートを定義するために反応ルータを使用しています。そして私は開発のためにcreate-react-appを使用しています。私の質問は、アドレスバーにサブページのURLを入力して、それを開発ビルドではなく、プロダクションビルドでは動作するようにしようとする場合です。私はあなたが定義したすべてのルートに対して同じページを提供、またはリアクトでレンダリングサーバ側を実装するためにあなたがあなたのWebサーバを設定する必要がありリアクションルートはFacebookの作成 - 反応 - アプリケーションビルドでは機能しません

var express = require('express'), 
    app = express(), 
    http = require('http'), 
    httpServer = http.Server(app); 

app.use(express.static(__dirname + '/build')); 

app.get('/', function(req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 
app.listen(3001); 
+0

どのURLですか?主なもの - yourdomain.com/またはサブページ - yourdomain.com/some/page/123? –

+0

@HoriaComanサブページ – Bhuthaya

答えて

4

を構築し、生産をホストするためのaaシンプル急行サーバーを使用しています

。開発用Webサーバーはおそらくこのように構成されていますが、プロダクション用のもの(Apache?Nginx?その他のもの)はありません。 This questionが役に立ちます。

この理由は、Reactがシングルページアプリケーションの構築に使用されているからです。いくつかのスクリプトを読み込む単一の従来のWebページがあります。これは、ビルドプロセスの出力が最も可能性が高いため、これらのスクリプトは他のすべてを処理します。これには、新しいDOMの生成、データの「サーバー」へのリクエストの作成、ビューの変更時にURLを操作して複数ページのアプリケーションの動作を偽装することさえ含まれます。この最後のビットは反応ルータがするものです。

しかし、Webサーバーは通常これらのことを知らない。彼らはURLを提供する方法を知っています。 yourdomain.com/をリクエストすると、メインページが表示されますが、yourdomain.com/some/page/123をリクエストすると、特別に設定されていない限り、何を提供するのかわかりません。また、他のURLのメインページの内容を返す構成もあります。 React-routerがURLを取得して適切なコンポーネントを使用するため、すべてが正常に見える>

+1

具体的には、著者は、 'index.html'を提供するハンドラーで'/'を'/* 'に変更したいと思うでしょう。 –

関連する問題