【发布时间】:2018-09-09 18:24:11
【问题描述】:
当我提交到 github 时,我试图隐藏我的 API 密钥,并且我查看了论坛以获取指导,尤其是以下帖子:
How do I hide API key in create-react-app?
我进行了更改并重新启动了纱线。我不确定自己做错了什么——我在项目的根目录中添加了一个.env 文件(我将其命名为process.env),并在文件中添加了REACT_APP_API_KEY = 'my-secret-api-key'。
我认为这可能是我在 App.js 中将密钥添加到我的fetch 的方式,并且我尝试了多种格式,包括不使用模板文字,但我的项目仍然无法编译.
非常感谢任何帮助。
performSearch = (query = 'germany') => {
fetch(`https://api.unsplash.com/search/photos?query=${query}&client_id=${REACT_APP_API_KEY}`)
.then(response => response.json())
.then(responseData => {
this.setState({
results: responseData.results,
loading: false
});
})
.catch(error => {
console.log('Error fetching and parsing data', error);
});
}
【问题讨论】:
-
嗨@RIYAJKHAN 我已将文件更改为 .env.local 并且它肯定在 src 目录之外,但我仍然没有定义 REACT_APP_API_KEY :/
-
为我解决的只是关闭运行本地开发服务器的终端并重新运行
npm run start。 -
你不能在 React 应用中隐藏秘密。请参阅 stackoverflow.com/a/46839021/4722345
-
不要使用它来存储秘密。来自docs...
WARNING: Do not store any secrets (such as private API keys) in your React app! Environment variables are embedded into the build, meaning anyone can view them by inspecting your app's files. -
您需要设置服务器并使用 JWT 等身份验证来隐藏它。阅读this suggestion 了解更多信息。
标签: reactjs environment-variables api-key