Fastify 应用中环境变量的管理方法

什么是 Fastify

Fastify 是近年来流行起来的 Node.js 的 Web 框架,据官方说,在它的特定领域,它是最快的 Node.js 框架之一,它是非常轻量级的,并采用了异步编程风格。它常常与 TypeScript 和 Swagger 集成使用,可以提供 RESTful 风格的接口服务。

什么是环境变量

在 UNIX 系统中,所谓环境变量即为系统运行时在操作系统中设定的一个全局的键值对,可以在运行进程的执行环境中作为标识存取。在大型的 Web 服务中,对于不同的环境,如开发、测试、生产等需要不同的设置,这时候环境变量就成为了非常有价值的一种配置方式。

例如在 Fastify 中:

----- ------- - ---------------------

----- ---- - -----------------
-------------------------- ------------- -
  -- ----- ----- ----
  
  ------------------- --------- -- ---- ----------
---

上述代码中,fastify 应用通过读取 NODE_ENV、HOST 和 PORT 等环境变量来启动不同的 WEB Server,这是一种非常常见的开发模式。

环境变量的管理方法

在实际应用中,常常需要通过配置文件来维护环境变量,但是在代码中引用这些配置文件,每次都需要执行读取文件的操作,不仅代码复杂度高,而且容易引入安全风险。因此更好的方式是将环境变量集中设置在操作系统环境变量中,程序运行时直接读取操作系统环境变量中的值。我们可以使用 'dotenv' 库来方便地加载环境变量,它可以从 '.env' 文件将环境变量加载到 'process.env' 中。

安装 dotenv

我们需要先安装 dotenv 库,它可以方便地实现从 '.env' 文件中加载环境变量到操作系统环境变量的过程。只需在控制台执行以下命令:

--- ------- ------ ------

使用 dotenv

我们可以从 '.env' 文件加载环境变量到 'process.env' 中,就像下面这个例子一样:

-- -- ------
---------------------------

-- -- ---- --
----- ---- - -----------------

-- ------- ---- --------
---------------------- -- ---- ----------

这里需要说明的是,不要将 '.env' 文件上传到 Git 之类的代码托管平台,这是非常危险的。我们应该将 '.env' 文件加入 .gitignore 文件以排除上传。

.env 文件格式

'.env' 文件中必须一行一个环境变量,并按照 "键=值" 的格式赋值,例如:

---------
--------------

.env.example 文件

为了避免未定义环境变量导致程序在运行时崩溃,我们可以在项目根目录下创建一个 '.env.example' 文件。这个文件列出了需要的环境变量列表。在程序运行之前,开发者需要将 '.env.example' 复制并重命名为 '.env' 并将相应的值赋给每个变量。如果某个变量没有定义,程序将抛出异常,并让开发者知道需要设置的变量名称。

例如,我们创建一个 '.env.example' 文件:

- ------------
---------

当开发者复制并且重命名该文件为 '.env',并且忘记设置 PORT 环境变量时,程序会有如下输出:

------ ------- ----------- --------- ----

特别注意

  • 禁止在环境变量中明文存储敏感的数据,如密码、密钥等。如果有必要,可以考虑使用配置中心等方式。
  • 过时的环境变量应该及时移除。
  • 禁止在源代码存储敏感数据,包括密钥、密码等。
  • 只有必要的人才能访问环境变量。

总结

在 Fastify 应用中,环境变量的管理是一项非常重要的任务,通过 dotenv 库,我们可以轻松加载环境变量,方便管理配置信息,同时增强了项目的安全性。建议使用环境变量来管理项目配置,把个人或组织的所有环境变量都明确记录下来,同时也不要在环境变量中存储敏感的数据。

-- -- ------
---------------------------

-- -- ---- --
----- ---- - -----------------

-- ------- ---- --------
---------------------- -- ---- ----------

参考链接

  1. fastify - A fast and low overhead web framework
  2. dotenv - A zero-dependency module that loads environment variables from a .env file

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64ee86d7f6b2d6eab3881ec6


猜你喜欢

  • Mongoose 中的虚拟属性(Virtuals)详解

    在 Mongoose 中,除了存储文档本身的属性以外,还可以定义虚拟属性(Virtuals),这些属性并不实际存储在数据库中,但是可以在文档中访问。虚拟属性的定义可以基于文档本身的数据,以及其他关联的...

    1 年前
  • Polymer 2.0 带来的 Web Components 新特性

    前言 Web Components 是一种用于开发可复用组件的新型技术,它基于一些新的 Web 标准,包括 Custom Elements 和 Shadow DOM。

    1 年前
  • 如何在 Cypress 中模拟 Fetch 请求?

    Cypress 是一个强大的端到端测试工具,它提供了丰富的测试功能和易于编写的测试脚本。在前端开发中,模拟 Fetch 请求是一个非常常见的需求。本文将介绍如何在 Cypress 中模拟 Fetch ...

    1 年前
  • Flexbox 布局实现固定列宽的方法

    在前端开发中,经常会遇到需要实现固定列宽的需求,如表格或导航栏等。而使用 Flexbox 布局可以轻松实现这一目标,本文将介绍如何使用该布局实现固定列宽的方法。 Flexbox 布局简介 Flexbo...

    1 年前
  • ECMAScript 2021 中的 Promise.resolve 提供返回异步结果的 promise 对象

    ECMAScript 2021 中的 Promise.resolve 提供返回异步结果的 promise 对象 ECMAScript 2021 (ES12) 是 JavaScript 的一个新版本,该...

    1 年前
  • LESS 预处理器实现 CSS 旋转效果技巧分享

    CSS 中旋转是一个很常见的样式效果,常常用于卡片翻转、图片展示等方面。但是,CSS 旋转效果的编写不够优雅,需要编写很多的冗余代码。LESS 预处理器则提供了一种更加便捷、简洁的实现 CSS 旋转效...

    1 年前
  • 如何在 Go 中实现 RESTful API

    RESTful API 是目前最常用的 API 设计架构之一,它通过 HTTP 协议中的不同动词(GET,POST,PUT,DELETE)来对不同资源进行操作。在前端领域中,使用 RESTful AP...

    1 年前
  • ES2020 中的操作数优先级详解

    JavaScript 中的操作数优先级是我们在编写代码时常常需要关注的问题。在 ES2020 中,操作数优先级的规则得到了更新和完善,本文将详细讲解这些变化,并给出一些示例代码,帮助读者深入理解。

    1 年前
  • 使用 SASS 实现定制的 Icon 字体

    在前端开发中,Icon 字体是非常重要的一个组件。它可以极大地提高页面的美观度,同时也对页面性能有着很好的影响。常见的 Icon 字体如 Font Awesome、Material Design Ic...

    1 年前
  • RxJS : 在 Angular app 中使用 httpClient

    RxJS (Reactive Extensions for JavaScript) 是一款常用于处理异步事件和数据的 JavaScript 库。它可以帮助开发者简化复杂的异步数据流,并提供更好的响应式...

    1 年前
  • Jest 测试中如何 mock DOM 元素的属性

    在前端开发中,Jest 是一款非常流行的测试框架,它能够让开发者快速、灵活地编写单元测试、集成测试等测试用例。然而,当我们需要测试一个包含 DOM 操作的函数时,就需要 mock 掉 DOM 元素的相...

    1 年前
  • Express.js 中使用 Connect-flash 实现消息提示的技巧

    在 Web 应用程序开发中,消息提示是非常普遍的需求。例如,在用户注册成功后,需要向用户显示一条注册成功的消息提示。在 Express.js 应用程序中实现消息提示通常有多种方式,其中 Connect...

    1 年前
  • 如何增加无障碍 (ARIA) 标签以便屏幕阅读器使用

    前端开发中,无障碍 (ARIA) 标签的使用越来越重要,它能够帮助屏幕阅读器正确地读取页面中的内容,提供更好的用户体验。本文将介绍什么是无障碍 (ARIA) 标签以及如何使用它们。

    1 年前
  • 全面掌握 ECMAScript 2019 新特性:Promise.allSettled

    前言 在编写 JavaScript 代码的过程中,处理多个异步任务是很常见的场景。在 ES6 中,我们引入了 Promise 对象,可以级联处理多个异步任务,这极大地简化了异步编程的难度。

    1 年前
  • 如何在 Angular 项目中接入 Tailwind CSS?

    Angular 作为现代的前端框架,已经成为了 web 开发中非常重要的技能之一。而 Tailwind CSS 则是一种快速开发 CSS 样式的解决方案。本文将介绍如何在 Angular 项目中接入 ...

    1 年前
  • Material Design 中 NestedScrollView 的使用技巧

    在 Material Design 设计风格中,ScrollView 是常用的列表显示方式,通常用于展示较长数据列表。但是,在一些场景中,我们可能需要更复杂的嵌套式 ScrollView,这种情况下,...

    1 年前
  • 如何正确地使用 Chai 的 eql 断言

    在前端开发中,测试是一个非常重要的部分。对于测试框架来说,Chai 是一个非常流行的选择,它提供了丰富的语法选项,也能很好地集成到常见的测试运行器中。其中一个有用的断言是 eql,它提供了一种深层比较...

    1 年前
  • ES6 中的 import() 和 export() 动态导入导出模块

    随着前端技术的不断发展,JavaScript 也迎来了了许多新的特性,其中 ES6 中的 import() 和 export() 动态导入导出模块便是其中一个重要的特性。

    1 年前
  • 如何兼容在 ECMAScript 2017 (ES8) 中新增的扩展运算符

    随着JavaScript的发展壮大,ECMAScript也在不断的更新迭代。在ECMAScript 2015(ES6)中,新增了扩展运算符,提高了开发效率。而在ECMAScript 2017(ES8)...

    1 年前
  • PWA 实现过程中的常见问题和解决方法

    什么是 PWA? PWA (Progressive Web App),翻译为渐进式 Web 应用,是一种结合了 Web 和 Native 应用体验优势的新型应用模式,可以让 Web 应用像本地应用一样...

    1 年前

相关推荐

    暂无文章