我有許多運行的函式對 api 呼叫使用相同的標頭,所以我使用了一個變數并在頂部分配了標頭。
但是,它為訪問密鑰回傳 undefined 并且我的程式崩潰了。所以我只是控制臺記錄了訪問密鑰,就像process.env.ACCESS_KEY,我得到了密鑰。我如何正確地將它分配給 headers 物件,以便它不會回傳 undefined?
import axios from 'axios';
const headers = {
Accept: 'application/json',
'Content-Type': 'application/json',
AccessKey: process.env.ACCESS_KEY,
};
const createMan = async (name: string) => {
const body = JSON.stringify({
Name: name,
});
const resp = await axios.post('https://example.com', body, {
headers,
});
console.log(headers)//AcccessKey is undefined in the headers object
console.log(process.env.ACCESS_KEY) //shows the access key. How?
return id;
};
uj5u.com熱心網友回復:
首先,如果您有許多使用相同標頭的呼叫,因此您可以設定一次標頭值,則無需在每次呼叫中發送標頭。
axios.defaults.headers.common['AccessKey'] = process.env.ACCESS_KEY;
如果您沒有從環境變數中獲得價值,請使用 https://www.npmjs.com/package/dotenv
應用程式.js
require('dotenv').config() // import at the top
uj5u.com熱心網友回復:
聽起來像是稍后在其他未顯示的代碼中process.env.ACCESS_KEY添加process.env(可修改),而不是在行程啟動時由 Node.js 設定。解決這個問題的三種方法:
也更新其他代碼
headers。創建
AccessKey一個訪問器屬性,process.env.ACCESS_KEY每次使用時都會從中檢索:const headers = { Accept: "application/json", "Content-Type": "application/json", get AccessKey() { return process.env.ACCESS_KEY; }) };有一個模塊,A) 獲取訪問密鑰(但它是
process.env.ACCESS_KEY分配給的)和 B) 創建和匯出 Axios 實體。(更多內容見下文。)
如果可能,我會使用 #1 或 #3,但如果在使用process.env.ACCESS_KEY之前已填充該值,則 #2 也AccessKey可以使用。
更多關于#3:
Axios 有一個有用的功能,您可以創建一個使用修改后的默認值預配置的實體,因此您不必在每次呼叫時都指定這些默認值。它看起來像這樣(來自檔案):
const instance = axios.create({
baseURL: "https://some-domain.com/api/",
timeout: 1000,
headers: {"X-Custom-Header": "foobar"}
});
因此,在您當前擁有的任何代碼中process.env.ACCESS_KEY,您都可以這樣做:
const accessKey = codeThatGetsTheAccessKey();
export const myAxios = axios.create({
headers: {
Accept: "application/json",
"Content-Type": "application/json",
AccessKey: accessKey,
}
});
然后,您將匯入該 Axios 實體(而不是使用全域實體)并使用它
import { myAxios } from "./your-module.js";
const createMan = async (name: string) => {
const body = JSON.stringify({
Name: name,
});
const resp = await myAxios.post("https://example.com", body);
return id; // ??? I'm not sure where this came from
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390751.html
標籤:javascript 节点.js 表达 环境变量
上一篇:Res.send不是一個函式
