env:更好的方法来阅读JavaScript中的环境变量

2021-05-07 11:27:37

如果您编写服务器端JavaScript,则需要从环境变量读取信息的机会。它被认为是共享敏感信息的最佳实践,例如访问令牌,环境变量内部的访问令牌,以防止它们安全。但是,环境变量从JavaScript读取的方式是错误的,以可能需要几小时才能弄清楚。当读取环境变量时出错时,您想立即知道,您不想解释密码错误消息。那就是env进来的地方。

ENV 1是零依赖性实用程序,旨在使读取环境变量更安全,更少易于出错。它通过解决服务器端JavaScript中环境变量相关错误的根原因来实现这一点。它在Node.js和Deno中工作,并根据正在使用的运行时自动从正确的位置读取环境变量。

第一个问题ENV地址是如何处理缺少的环境变量。环境变量缺少的环境变量非常常见,因为它们被意外未正确设置,或者因为它们只存在于某些容器上而不是全部。在任何情况下,您都希望无缝地处理缺失的环境变量。在Node.js中,您可能会做这样的事情:

这里的意图是使用用户名环境变量(如果没有,如果没有,则默认为" guest" ENV StumbLines此项以使设置默认值清除:

此代码具有相同的效果,但避免了该过程中的任何类型的胁迫。当然,这假设缺少用户名是可以的。但是,如果您绝对需要存在的环境变量,以便为您的申请工作?为此,您可能会编写这样的代码:

这是一些简单验证的大量代码,如果您有几个必需的环境变量,则最终将重复每一个模式。使用ENV,您可以使用RESCELD()方法:

如果在此示例中缺少环境变量用户名,则抛出错误告诉您。您还可以以类似的方式使用所需属性:

此语法允许您避免键入字符串,但如果不存在用户名,则仍将抛出错误。

与环境变量很常见的另一种错误是拼写错误。当您多次键入相同的事情时,拼写错误可能很难点击。例如,您可能会键入这样的内容:

就个人而言,我花了几小时的时间跟踪与我错误地键入我的代码中的环境变量名称相关的错误。无论何种原因,我正确键入了变量的名称,但不是环境变量名称。如果您希望将JavaScript变量与某些所需环境变量具有相同的名称,则可以使用所需属性的破坏性以仅键入一次名称:

这里,从相同名称的环境变量创建两个本地变量,端口和主机。如果缺少任何环境变量,则抛出错误。

具有环境变量的另一个微妙类型的错误是类型不匹配。例如,请考虑以下Node.js代码:

此行或类似的东西出现在很多Node.js应用程序中。大部分时间都不会导致问题......但它可以。你能发现这个问题吗?

所有环境变量都是字符串,因此JavaScript变量端口是当存在环境变量时的字符串,如果没有,则是一个数字。在丹麦中使用类似的代码扔了一个错误的错误2,让我一段时间弄清楚。事实证明,丹诺HTTP服务器需要端口是一个数字,所以它在本地工作得很好,但当我将其部署到云运行时,我收到了错误。

即使您将非字符串值传递为默认值,ENV也会将其转换为字符串,以确保在读取环境变量时才会收到字符串值。

有时您可能希望检查多个环境变量,只有在存在环境变量中时,才能使用默认值。所以你可能有代码如下所示:

使用此代码,Env将从它发现的第一个环境变量返回值。类似于get(),first()允许您在默认值中传递以使用,如果找不到环境变量,并且该默认值会自动转换为字符串。作为添加的错误检查,如果第一个参数不是数组,或者只有一个项目的数组,那么抛出错误。

Env是那些对我来说非常有价值的公用事业之一,我有时会忘记提及它。在过去的两年里,我一直在一些个人项目中使用它,它已经救了我很多时间。调试与环境变量相关的错误并不是任何人的乐趣的想法,我无法计算我被ENV错误保存的时间。我希望你能找到它的帮助。