我试图隐藏我的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);
});
}
现在有一种更简单的方法。
只需创建.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。本地不见了)
更多信息:添加自定义环境变量
你必须安装npm install env-cmd
在根目录中创建.env并像这样更新& REACT_APP_是变量名的强制前缀。
REACT_APP_NODE_ENV="production"
REACT_APP_DB="http://localhost:5000"
更新package.json
"scripts": {
"start": "env-cmd react-scripts start",
"build": "env-cmd react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
}
在CREATE REACT APP中使用环境变量的步骤(不含dotenv包)
Create a new file called .env in the root folder of the project (NOT inside src folder but one level up. Remember, it should be at the same level as package.json (THIS IS VERY IMPORTANT!!)
Define your variables like so (Note that every variable you define should start with REACT_APP_)
Example : .env file
REACT_APP_ACCESS_KEY=8Sh9ZLwZevicWC-f_lmHvvyMu44cg3yZBU
Note: You don't have to enclose the value in "" or ''
Now you can use the variable in any of your components like so
const apiKey = process.env.REACT_APP_ACCESS_KEY
The name should match the key given in the .env file
Now before you try this out, always remember to restart the local server. Once you run npm start it works. This step applies whenever you make changes to the .env file. We generally forget this step so it might not work.
Optionally, check if .env entry is present in .gitignore file. If the entry of .env exists in .gitignore then your .env file will not be pushed to github(This is the reason why we use .env in the first place).