2017-01-25 8 views
1

私はこの優れたチュートリアル:https://www.fullstackreact.com/articles/using-create-react-app-with-a-server/から出発し、新しいルートを提供するために新しいページを追加することでそれを拡張しようとしています。しかし、周りいじくるの時間後、私は何とか作成反応するアプリはいくつかの奇妙なマジックをやっていることを実現しています(mentioned in their docs hereとして):Webpackは何とかエクスプレスルーティングを完全にバイパスします

`create-react-app` configures a Webpack development server to run on `localhost:3000`. 

This development server will bundle all static assets located under `client/src/`. 

All requests to `localhost:3000` will serve `client/index.html` which will include Webpack's `bundle.js`. 

キーの引用は「localhost:3000へのすべてのリクエストはclient/index.htmlにサービスを提供します」です。私はこれがどうなるか分かりません。だから、でも周りroutes/index.jsと私の混乱にもかかわらず:WebPACKのは何とかとにかくindex.htmlをするlocalhost:3000を指示されているので、それは問題doesntの

app.route('/') 
     .get(function (req, res) { 
      res.sendFile(bipath.join(__dirname, '../public', 'THISCANBEANYRANDOMFILENAME.html')) 
     }); 

。どこでどのようにこれをやっているのですか?結論新しいhtmlファイルを提供するために私のルートを修正しようとしており、あらゆる種類のファイルパスの問題に遭遇しています(require('path')またはsendFile(...,{root: __dirname})を使用しても)

ここでは正確に何が起こっていますか私を助けるためのヒントを教えてください。

編集:これは、babelとwebpackからのものである可能性があります。

this is my problem in one picture

+0

さらに詳しい情報が必要な場合は、githubのファイルをご覧ください。https://github.com/sw-yx/fcc-nightlife – swyx

+0

Babelはすべて透過的です。私はルートエンドポイントを打つことがパスに当たっていないと思う理由を理解していません。それは、私たちが話している 'index.html'ですね。 –

+0

はい。上記のスクリーンショットで「indextest.html」という存在しないファイルを送信するようにsendFileを意図的に編集したため、ルートエンドポイントに当たってもパスがヒットしないことを自分自身に証明することができます。ブラウザでヒットすると、INDEX.HTML 。だから、明らかにwebpack dev serverによってどこかで傍受されていました。黒い魔法とは何ですか?私はどこのwebpack devサーバーの設定でも表示されません(私はgithubを投稿しました)ので、私はどのようにこの傍受を行っているのか分かりません。 – swyx

答えて

2

私は周りにプレイしていないと反応するアプリを作成し、それは代わりにデフォルトのNPMの開始を使用してのように思える、あなたがあなた自身のサーバーのファイルを作成して、それを実行することができます。

これは良い例のようです。また

https://medium.com/@patriciolpezjuri/using-create-react-app-with-react-router-express-js-8fa658bf892d#.6y4rrl61q

あなたがAPIとして使用される経路を持つように探しているなら、あなたはリンクチュートリアルに示すような別のポートへのプロキシそれらをできました。

+0

はい、APIは完全に動作しています。このチュートリアルでは、APIサーバーとクライアントサーバーをデュアルブートする方法を説明します。そのクライアントサーバーは私が問題を抱えています:htmlは基本的には黒い魔法です。これは何とかルート/ index.jsを尊重しません。 – swyx

+0

npm startを実行すると、デフォルトのcreate-react-app実行スクリプトは、すべてのリクエストをインターセプトするwebpack devサーバを起動します。デフォルトの実行スクリプトを実行せず、代わりに非apiサーバーの開始を処理する独自のserver.jsを作成することで、この問題を回避することができます。これまでの回答に感謝しているcreate-react-application – Jon

+0

に、より洗練されたソリューションが組み込まれているかどうかはわかりません。私は私自身の実行スクリプトを書く必要があるかもしれないと思う。私が理解していないことは、私のnode_modulesフォルダにwebpackモジュールがないように見えることです。また、これらの要求を傍受するのに必要な 'webpack.config.js'ファイルも見つかりません。私のpackage.json(https://github.com/sw-yx/fcc-nightlife/blob/master/package.json)では、チュートリアルで 'babel-node'を使ってサーバとクライアントを起動し、もう一度「babel-node」がどこから来るのかというアイデア。非常に多くの謎。 – swyx

関連する問題