我试图隐藏我的API密钥,当我提交到GitHub,我已经通过论坛的指导,特别是下面的帖子:
我如何隐藏一个API密钥在创建反应应用程序?
我做了修改并重新启动Yarn。我不确定我做错了什么-我添加了一个。env文件到我的项目的根(我命名为process.env),在文件中我只是把REACT_APP_API_KEY = 'my-secret-api-key'。
我想这可能是我在App.js中添加关键字的方式,我尝试了多种格式,包括不使用模板文字,但我的项目仍然不会编译。
performSearch = (query = 'germany') => {
查询https://api.unsplash.com/search/photos?query=获取(“$ {}client_id = $ {REACT_APP_API_KEY}’)
.then(response => response.json())
.then(responseData => {
this.setState ({
结果:responseData.results,
加载:假
});
})
.catch(error => {
console.log('读取和解析数据出错',Error);
});
}
Webpack用户
如果你正在使用Webpack,你可以安装和使用dotenv-webpack插件。要做到这一点,请遵循以下步骤:
安装包
yarn add dotenv-webpack
创建一个.env文件
// .env
API_KEY='my secret api key'
将它添加到webpack.config.js文件中:
// webpack.config.js
const Dotenv = require('dotenv-webpack');
module.exports = {
...
plugins: [
new Dotenv()
]
...
};
在代码中使用它
process.env.API_KEY
有关更多信息和配置信息,请访问dotenv-webpack。
现在有一种更简单的方法。
只需创建.env。在根目录中的本地文件,并在那里设置变量。在你的情况下:
REACT_APP_API_KEY = 'my-secret-api-key'
然后在JavaScript文件中以如下方式调用它:
process.env.REACT_APP_API_KEY
React从react-scripts@0.5.0开始支持环境变量。你不需要一个外部包来做到这一点。
在.env中添加开发环境变量
*注:我建议使用。env。Local而不是.env,因为create-react-app在创建项目时将此文件添加到gitignore。
文件的优先级:
npm start: .env.development.local, .env.development, .envlocal /, .env
NPM运行build: . environment .production。地方,.env。生产、.env。地方、.env
NPM测试:.env.test。地方,.env。Test, .env(注意。env。本地不见了)
更多信息:添加自定义环境变量