我想根據我的應用程式中的 envs 設定“id”、“env”和“name”的自定義標頭,它們對于不同的 envs 都有不同的值。我無法根據我的代碼邏輯找出使其作業的最有效方法。
這是我定義 env 的方式:
let host = "xxxxxxxx";
function getHost() {
var env = getEnv();
env = env ? env : process.env.REACT_APP_ENV;
switch (env) {
case "stage":
host =
"xxxxxxxxxxxxxxxxxxx";
break;
case "prod":
host =
"xxxxxxxxxxxxxxxxx";
break;
case "local":
host = "xxxxxxxxxxxxxx";
break;
case "dev":
default:
host = "xxxxxxxxxxxxxxxxxxx";
break;
}
return host;
}
export const HOST = getHost();
這是我的應用程式中每個“標題”的設定方式,正如您所看到的,到目前為止只有一些值:
export function fetchRefresh(token) {
return (dispatch) => {
return fetch(API_ROOT "/xxxxxxx/xxx/xxxxxx", {
method: "POST",
headers: {
authorization: `Bearer ${token}`,
"Content-Type": "application/json",
Accept: "application/json",
},
body: token,
})
.then()
// the rest
}
}
我想過做這樣的事情,并將 HEADERS 添加到 headers: {} 在我的代碼中,但這只會使我想要添加單個物件的 3 個自定義標題,它們都應該是單獨的值而不是物件:
function getHeaders() {
var env = getEnv();
env = env ? env : process.env.REACT_APP_ENV;
switch (env) {
case "stage":
return {
"ID": "xxxxxxxxxxxxxx",
"ENV": "xxxxxxxxxxxx",
"NAME": "xxxxxxxx",
}
case "prod":
return {
"ID": "xxxxxxxxxxxxxx",
"ENV": "xxxxxxxxxxxx",
"NAME": "xxxxxxxx",
}
case "local":
return {
"ID": "xxxxxxxxxxxxxx",
"ENV": "xxxxxxxxxxxx",
"NAME": "xxxxxxxx",
}
case "dev":
return {
"ID": "xxxxxxxxxxxxxx",
"ENV": "xxxxxxxxxxxx",
"NAME": "xxxxxxxx",
}
}
}
export const HEADERS = getHeaders();
你能幫忙嗎?謝謝
uj5u.com熱心網友回復:
你的意思是檢索環境變數?您可以通過使用非常常用的“dotenv”包來設定自己的。
https://www.npmjs.com/package/dotenv
您可以在.env檔案中設定環境變數,如下所示:
MY_SECRET="new-secret-string"
KEY=VALUE
可以通過以下方式處理
// This will read variables from .env file
require('dotenv').config();
console.log(process.env.MY_SECRET)
uj5u.com熱心網友回復:
您需要執行以下操作。首先,安裝https://www.npmjs.com/package/env-cmd
接下來,您可以.env根據您的環境指定要使用的 。下面的代碼允許您以宣告方式而不是命令方式指定配置(這是您嘗試做的)。即使您再添加一個依賴項,您也會獲得一種更有彈性的做事方式。現在,當你說process.env.REACT_APP_ID process.env.REACT_APP_ENV process.env.REACT_APP_NAME,然后根據 env 正確的值將被透明地拾取。
"scripts": {
"start": "env-cmd -f env_anotherenv.env react-scripts start",
"start_vscode": "env-cmd -f env_vscode.env react-scripts start",
"build_staging": "env-cmd -f env_staging.env react-scripts build --profile",
"build_production": "env-cmd -f env_production.env react-scripts build --profile"
}
env_production.env 的例子是
REACT_APP_ID = someid
REACT_APP_ENV = someenv
REACT_APP_NAME = somename
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/398179.html
標籤:javascript 反应 接口 自定义标题
