2016-11-07 122 views
6

我已經使用create-react-app啓動了一個反應應用程序,並運行npm run eject腳本以訪問所有文件。後來我安裝了快車,創造server.js文件在同一水平坐作爲package.json文件設置代理服務器以創建反應應用程序

這些都是server.js文件內容:

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')}/`); 
}) 

沒有什麼瘋狂的在這裏,剛剛建立的,我需要使用機密未來API代理因爲我不想暴露我的api。

在此之後,我添加了"proxy": "http://localhost:3001/"到我的package.json文件。我現在卡住了,因爲我需要弄清楚如何正確啓動我的服務器,並在開發模式下使用此server.js文件,然後在生產中使用。

理想的情況下這也將是很好的,如果我們可以用一個以上的代理即/api/api2

回答

4

你沒有彈出來運行你的server.js。你可以運行它node server.js連同create-react-app

即使在彈出啓動dev服務器之後,仍然可以執行npm start

要運行/api1/api2,您只需在server.js文件中處理它,它應該工作得很好。您需要匹配您server.jsport和一個在proxy裏面設置package.json - 在這種情況下,它應該是"proxy": "http://localhost:3031"

+0

我怎麼能確定與這樣的代理服務器發出請求的客戶端的IP地址?使用快遞,req.ip只是給了我localhost IP – stuart

+0

@jpdelatorre你的答案是真棒,挽救生命。你知道如何在不使用'create-react-app'的情況下設置這個相同的選項,我的意思是從零開始 – Muhammed

+0

這個解決方案對我來說仍然不起作用。當我運行npm run start時,它仍然使用運行反應應用程序的localhost:3000。我知道PR有點大,但是我已經編輯了package.json來匹配它,所以你已經在react-uI/package.json下面描述了https://github.com/moon-room/log/pull/1 你有什麼想法我做錯了嗎? –

相關問題