2017-08-02 81 views
1

我正在開發React網絡應用程序,並使用了create-react-app npm實用程序。 我的應用程序與開發期間在本地機器上的服務器進行通信。出於這個原因,我使用的所有Ajax請求都使用localhost:port地址。在構建中排除/包含/更改代碼部分

當然,當我要在生產環境中構建和部署項目時,我需要將這些地址更改爲生產項目。 我習慣了preprocess Grunt插件流程(https://github.com/jsoverson/grunt-preprocess),它有可能在構建時標記排除,包含或更改的代碼部分。

例如:

//@if DEV 
const SERVER_PATH = "localhost:8888"; 
//@endif 
//@if !DEV 
const SERVER_PATH = "prot://example.com:8888"; 
//@endif 

你知道,如果有一種方法做create-react-app開發環境中這樣的事情?

預先感謝您!

回答

0

我不太確定服務器端代碼是如何處理請求的,但是如果您在ajax查詢中使用相對路徑,則在部署到生產時不應該更改代碼。例如,下面是一個使用相對路徑的AJAX查詢:

$.ajax({ 
    url: "something/getthing/", 
    dataType: 'json', 
    success: function (data) { 
     //do a thing 
    } 
}); 

希望幫助:)

0

在創建的NetworkInterface,使用process.env.NODE_ENV,以確定哪些PATH使用。

if (process.env.NODE_ENV !== 'production') { 
    const SERVER_PATH = "localhost:8888"; 
} 
else { 
    const SERVER_PATH = "prot://example.com:8888"; 
} 

您的應用程序會自動檢測你是否在生產或開發,並因此產生對環境的正確值的常量的server_path。

+0

如果我在瀏覽器中,它也可以工作嗎?我猜不會。但我想我可以檢查window.location。謝謝! –

+0

「在瀏覽器中」是什麼意思?如果你構建你的應用程序並直接在瀏覽器中運行它? – petithomme

+0

如果您直接使用Node.js運行應用程序,則應用程序將檢測到您處於「開發」環境中。如果您構建應用程序並使用**內置**版本,則應用程序將檢測到您處於「生產」環境。 – petithomme

相關問題