2016-11-07 11 views
6

create-react-appを使用して反応アプリケーションを開始し、すべてのファイルにアクセスするためにnpm run ejectスクリプトを実行しました。ちょうど私が秘密を使用する必要があり、将来のAPIプロキシの設定を、ここで作成する反応アプリケーション用のプロキシサーバーを設定する

const express = require('express'); 
const app = express; 

app.set('port', 3031); 

if(process.env.NODE_ENV === 'production') { 
    app.use(express.static('build')); 
} 

app.listen(app.get('port'),() => { 
    console.log(`Server started at: http://localhost:${app.get('port')}/`); 
}) 

何もクレイジー:私はその後急行設置し、これらはserver.jsファイルの内容ですpackage.jsonファイル

と同じレベルに座るserver.jsファイルを作成しました私のapiを公開したくないからです。

この後、をpackage.jsonファイルに追加しました。私は今サーバを正しく起動する方法を理解し、このserver.jsファイルを開発モードで使用し、その後は本番環境で使用する必要があるため、こだわっています。私たちは、すなわち/api/api2

答えて

4

あなたのserver.jsを実行するために取り出す必要はありませんでしたつ以上のプロキシを使用することができれば

は、理想的にはそれも良いでしょう。 node server.jsと一緒に create-react-appと一緒に実行するだけです。

あなたのdevサーバを起動するために取り出した後でも、まだnpm startを行うことができます。

/api1/api2を実行するには、server.jsファイルで処理するだけで問題ありません。あなたのserver.jsportpackage.json内部proxy設定でいずれかに一致する必要がある - この場合には、それがあるべき"proxy": "http://localhost:3031"

+0

どのように私はこのようなプロキシと要求しているクライアントのIPアドレスを決定することができますか?エクスプレス、req.ipを使用するだけで私にローカルホストのIPを与えます – stuart

+0

@jpdelatorreあなたの答えはすばらしく、命を救うものです。 'create-react-app'を使わずにこの同じオプションを設定する方法を知っていますか?つまり、ゼロから意味します。 – Muhammed

+0

この解決策ではまだ動作しません。 npm run startを実行すると、まだ反応アプリが実行されているlocalhost:3000が使用されます。私はPRがかなり大きいと知っていますが、私はあなたがreact-uI/package.json https://github.com/moon-room/log/pull/1で説明したようにpackage.jsonを編集しました。 あなたは私が間違っていることを考えていますか? –

関連する問題