我的git仓库中有这样的代码,但这不是一个好主意,因为我的API密钥以字符串形式公开,每个人都可以看到。
所以我的问题是如何处理这个问题?是否应该将此API密钥保存到* .txt文件并导入此字符串?并将这个txt文件添加到.gitignore文件吗?
您能建议解决该问题的正确方法是什么吗?
import axios from 'axios';
export const FETCH_LOCATION = 'FETCH_LOCATION';
export const FETCH_WEATHER = 'FETCH_WEATHER';
export const HISTORY_SELECTED = 'HISTORY_SELECTED';
export const SHOW_INFO = 'SHOW_INFO';
const API_KEY_GOOGLE = 'string';
const API_KEY_WUNDERGROUND = 'string';
export function fetchLocation(city) {
const urlGoogle = `https://maps.googleapis.com/maps/api/geocode/json?address=${city}&key=${API_KEY_GOOGLE}`;
const request = axios.get(urlGoogle);
答案 0 :(得分:2)
一种常见的做法是使用.env
文件,并忽略.gitignore中的.env
。您将这些文件加载到process.env
中。您可以使用名为dotenv
的软件包。
例如,如果我需要Google API,我会创建一个文件调用.env
,然后将其存储为
GOOGLEAPIKEY=asdfewvger343sdfasdf
如果要使用webpack
加载它,则将其添加为插件
import DotEnvPlugin from 'webpack-dotenv-plugin';
plugins: [
new DotenvPlugin({
sample: './.env.default',
path: './.env.dev',
}),
...
]
或者您也可以使用dotenv
require('dotenv').config()
这将从您的根目录加载.env
文件,而无需进行配置。
详细了解 https://github.com/motdotla/dotenv
在您的应用中,您将使用googleapi,例如process.env.GOOGLEAPIKEY
const data = await axios
.post(`localhost:3000/api/helloworld/${process.env.GOOGLEAPIKEY}`)
.send(data.fetchData);