我使用了这个教程:https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/environment-variables.md https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/environment-variables.md
我遵循的步骤:
1)安装[电子邮件受保护] /cdn-cgi/l/email-protection
2)在根文件夹中创建两个文件:“.env.development”和“.env.Production”
3)“遵循他们的设置说明”(dotenv npm 文档上的示例)
In 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 Projects\Gatsby\sebhewelt.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构建的,还有其他安全的方法吗?