我的項目有一個依賴於要設置的環境變量的節點依賴項,代碼很簡單,如const KEY = process.env.SOME_KEY
。 我知道react-native不支持傳統的環境變量。關於react-native自定義依賴關係的環境變量
什麼是de選項來滿足這種需求,並使此代碼工作?假設我無法控制依賴關係的代碼。
我的項目有一個依賴於要設置的環境變量的節點依賴項,代碼很簡單,如const KEY = process.env.SOME_KEY
。 我知道react-native不支持傳統的環境變量。關於react-native自定義依賴關係的環境變量
什麼是de選項來滿足這種需求,並使此代碼工作?假設我無法控制依賴關係的代碼。
這裏的解決方案非常簡單,您應該使用自定義的babel變換器,在代碼轉換步驟(此階段可以訪問環境變量)中將代碼中的所有process.env.
調用替換爲實際env值。轉換也適用於您的應用程序的依賴關係,這意味着您可以對第三方代碼進行必要的修改而不實際更改它。
爲了做到這一點,首先需要創建一個.babelrc
文件類似下面,並把它放在你的項目的根目錄:
{
"presets": ["react-native"],
"plugins": [
"transform-inline-environment-variables"
]
}
一旦這樣做了,去故宮安裝babel-preset-react-native
和babel-plugin-transform-inline-environment-variables
。
最後,重新運行react-native start
(基本上重新啓動打包程序),所有process.env調用都將被替換。
謝謝。我在http://stackoverflow.com/a/37823398/1666071找到了相同的答案。如果您可以詳細說明一些問題並解釋由於RN設置NODE_ENV的方式必須完成的解決方法,我願意選擇您的答案。 – enapupe
上面提到的問題和與它相關的PR已經合併到master中,爲了讓它工作,我沒有執行除了這裏描述的步驟之外的任何額外步驟。 –
如果您喜歡可維護的應用程序,我的個人建議是避免使用Babel。 –
你有沒有試過這個? [react-native-config](https://www.npmjs.com/package/react-native-config) – LuisPinto
@LuisPinto當你控制代碼時,這很好,我不知道。 – enapupe