har*_*ves 5 javascript environment-variables gatsby dotenv
我已经尝试使用.env.development和.env.production文件将环境变量添加到我的 Gatsby 项目中,并且效果很好。
如果缺少其中一个环境变量,我希望我的构建失败,但是我似乎看不到如何启用此功能。
我已经通读了Gatsby 环境变量文档,但似乎看不出这是如何工作的?这可能吗?
我相信它在底层使用了 dotenv/webpack 定义插件。
我\xe2\x80\x99m确信还有其他方法可以做到这一点,但通过一些快速测试,这种方法似乎对我来说效果很好。
\n\n在您的gatsby-config.js文件中,您可以选择明确要求dotenv,以便您可以在配置中使用这些环境变量。
我添加了以下内容,现在除非指定的环境变量存在,否则 Gatsby 构建将失败。
\n\n// Load the environment variables, per\n// https://www.gatsbyjs.org/docs/environment-variables/#server-side-nodejs\nrequire('dotenv').config({\n path: `.env.${process.env.NODE_ENV}`,\n})\n\nfunction checkEnv(envName) {\n if (typeof process.env[envName] === 'undefined' || process.env[envName] === '') {\n throw `Missing required environment variables: ${envName}`\n }\n}\n\ntry {\n checkEnv('NODE_ENV')\n checkEnv('EXAMPLE_MISSING_ENV')\n checkEnv('EXAMPLE_API_KEY')\n} catch (e) {\n throw new Error(e)\n}\n\n// The rest of the config file\nRun Code Online (Sandbox Code Playgroud)\n\n我可以想象进一步定制这个,例如。为具有后备的变量记录警告,而不是为内容源插件或主题所需的变量抛出错误。希望这作为一个起点有所帮助!
\n