在Gatsby中设置环境变量
我使用了此教程:https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/environment-variables.md
我遵循的步骤:
1)安装dotenv@4.0.0
2)在根文件夹中创建".env.Development"和".env.Products"两个文件
3)"按照他们的设置说明操作"(dotenv NPM文档上的示例)
在gatsby-config.js
中:
const fs = require('fs');
const dotenv = require('dotenv');
const envConfig =
dotenv.parse(fs.readFileSync(`.env.${process.env.NODE_ENV}`));
for (var k in envConfig) {
process.env[k] = envConfig[k];
}
遗憾的是,当我运行gatsby develop
时,NODE_ENV
尚未设置:
error Could not load gatsby-config
Error: ENOENT: no such file or directory, open 'E:Front-End ProjectsGatsbysebhewelt.com.env.undefined'
当我手动设置它时,它起作用:
dotenv.parse(fs.readFileSync(`.env.development`));
我需要Gatsby-CONFIG中的环境变量,因为我将敏感数据放在此文件中:
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: envConfig.CONTENTFUL_SPACE_ID,
accessToken: envConfig.CONTENTFUL_ACCESS_TOKEN
}
}
如何使其工作?
PS:额外的问题-这让我思考,我知道我不应该在GitHub上放置密码和令牌,但由于netlify是从GitHub构建的,还有其他安全的方法吗?
解决方案
您应该只在愿意将环境文件签入GIT时才使用这些文件。对于密码/令牌等,请将其添加到Netlify或您通过其仪表板使用的任何构建工具。
您可以通过process.env.ENV_VARIABLE
在Gatsby-config.js和amp;Gatsby-node.js中访问这些内容。
.env.development
&;.env.production
。
相关文章