【问题标题】:In Javascript, how can I throw an error if an environmental variable is missing?在 Javascript 中,如果缺少环境变量,我该如何抛出错误?
【发布时间】:2021-09-20 13:27:20
【问题描述】:

在 Javascript 中,我可以像这样访问环境变量:

pizza = process.env.PIZZA

如果缺少该 envar/null/undefined,是否有一个简单的语法来引发错误?类似于 Bash ?:

pizza = process.env.PIZZA?  // not real Javascript

是的,显然我可以明确地检查自己是否未定义:

pizza = process.env.PIZZA; if (!pizza) { throw ... }

但这很快就会重复。每次我想以任何语言访问一个 envar 时,如果该 envar 丢失,我想要一个错误。在我编写一个小实用程序来进行检查 (my_env.require('PIZZA')) 之前,我想确保我没有错过可以轻松实现这一目标的 Javascript 功能。

是否有任何简单的语言功能可以做到这一点?或者也许是一个替换 process.env 的库?

【问题讨论】:

  • 编写你自己的函数来完成它。获取环境变量;检查nullundefined;如果是,则抛出错误;返回值。然后打电话给它,而不是直接去process.env 处理所有事情。
  • 不幸的是,没有。访问不存在的属性只会返回undefined,它不会出现错误。如果您尝试访问下一个级别,您只会收到错误消息,例如process.env.PIZZA.x
  • 在不久的将来,process.env.PIZZA ?? throw new Error("Missing Pizza") 可能会起作用。

标签: javascript null environment-variables


【解决方案1】:

环境变量不存在时抛出的辅助函数:

function getEnv(name) {
    let val = process.env[name];
    if ((val === undefined) || (val === null)) {
        throw ("missing env var for " + name);
    }
    return val;
}

然后在你刚才说的代码中;

pizza = getEnv("pizza");

【讨论】:

  • 已更新 - 忘记添加 return val;
  • 是的,像这样的辅助函数是当前的计划——我很惊讶我必须在每个新项目(每种语言)中编写它。我不知道谁在访问他们不介意丢失的环境变量(没有明确提供默认值),但肯定不是我。
  • @JonasWilms - 你推荐扔什么?
  • 一个合适的Error 实例可能
猜你喜欢
  • 1970-01-01
  • 2022-11-02
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 2019-10-04
  • 1970-01-01
相关资源
最近更新 更多