我的react应用使用graphql从github获取用户数据,并且请求是通过.env
文件上的个人访问令牌发出的。
我的.env
文件位于项目的root
文件夹中。密钥在左侧,密钥值(个人访问令牌)在右侧:
.env
文件:REACT_APP_GITHUB_PERSONAL_ACCESS_TOKEN=xxxXXX
我的代码在App.js
文件夹中component
文件夹中的src
文件中。
App.js
-> ./src/components/App.js
在App.js
内部,第6-10行有以下代码:
const axiosGitHubGraphQL = axios.create({
baseURL: 'https://api.github.com/graphql',
headers: {
Authorization: `bearer ${process.env.REACT_APP_GITHUB_PERSONAL_ACCESS_TOKEN}`,
},
});
通过此代码,我可以使用.env
文件中的个人访问令牌向github请求,但该文件不起作用。
有人知道我的.env
文件为什么不起作用吗?
我的react应用位于链接上的github:https://github.com/rvmelo/tech6-app
(注意:我在此链接上遵循了教程的第一步:https://www.robinwieruch.de/react-with-graphql-tutorial/)
答案 0 :(得分:1)
这种自动加载.env
的功能是react-scripts
的东西。
在使用webpack-dev-server
进行开发时,应手动加载。
您可以为此目的使用dotenv
软件包。
const dotenv = require('dotenv').config({path: __dirname + '/.env'});
在webpack配置插件部分使用
new webpack.DefinePlugin({
"process.env": dotenv.parsed
}),
答案 1 :(得分:0)
我目前正在使用同一教程https://www.robinwieruch.de/react-with-graphql-tutorial/,但遇到了同样的问题。
解决方案是先在GitHub上创建一个个人访问令牌,然后将其复制到您的.env文件中,该文件应位于根目录中。 然后保存文件并重新启动应用程序。
取消并终止react app并重新启动一次npm。这使环境变量能够自动获取。我注意到环境变量必须重新启动才能运行
const axxiosGitHubGraphQL= axios.create({
baseURL:"https://api.github.com/graphql",
headers:{
Authorization: `bearer ${
process.env.REACT_APP_GITHUB_PERSONAL_ACCESS_TOKEN}`,
}
}
);