如果缺少环境变量,则 Gatsby 构建失败

har*_*ves 5 javascript environment-variables gatsby dotenv

我已经尝试使用.env.development.env.production文件将环境变量添加到我的 Gatsby 项目中,并且效果很好。

如果缺少其中一个环境变量,我希望我的构建失败,但是我似乎看不到如何启用此功能。

我已经通读了Gatsby 环境变量文档,但似乎看不出这是如何工作的?这可能吗?

我相信它在底层使用了 dotenv/webpack 定义插件。

ken*_*ndy 3

我\xe2\x80\x99m确信还有其他方法可以做到这一点,但通过一些快速测试,这种方法似乎对我来说效果很好。

\n\n

在您的gatsby-config.js文件中,您可以选择明确要求dotenv,以便您可以在配置中使用这些环境变量。

\n\n

我添加了以下内容,现在除非指定的环境变量存在,否则 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以想象进一步定制这个,例如。为具有后备的变量记录警告,而不是为内容源插件或主题所需的变量抛出错误。希望这作为一个起点有所帮助!

\n