本文介绍: env文件用于配置将存在于正在运行的应用程序中的环境变量。这个想法来自十二因素应用程序方法,该方法说要存储环境部署之间可能有所不同的所有内容(例如开发,暂存,生产)。配置不应是应用程序代码的一部分,也不应签入到版本控制中。API 凭据或其他机密等内容应单独存储,并加载需要它们的环境中。通过文件,.env可以管理环境设置变量不切实际的应用程序(如开发计算机或 CI)的配置。有许多不同的语言的库支持使用.env文件变量加载环境中,它们通常被称为“dotenv”,也不例外。

最新版本 20.6.0 中,Node.js 现在内置了对 .env 文件的支持。现在,您可以将环境变量.env 文件加载到 process.env Node.js 应用程序中,完全无依赖

加载 .env 文件现在非常简单:

node --env-file .env

什么是 .env ?

.env 文件用于配置将存在于正在运行的应用程序中的环境变量。这个想法来自十二因素应用程序方法,该方法说要存储环境中部署之间可能有所不同的所有内容(例如开发,暂存,生产)

配置不应是应用程序代码的一部分,也不应签入到版本控制中。API 凭据或其他机密等内容应单独存储,并加载到需要它们的环境中。通过文件.env 可以管理环境设置变量不切实际的应用程序(如开发计算机或 CI)的配置。

有许多不同的语言的库支持使用 .env 文件将变量加载到环境中,它们通常被称为“dotenv”,Node.js dotenv 也不例外。但是现在,Node.js本身支持这种行为

如何在 Node.js使用 .env ?

文件 .env 如下所示:

PASSWORD=supersecret
API_KEY=84de8263ccad4d3dabba0754e3c68b7a
# .env files can have comments too

按照惯例,您可以将其 .env 保存在项目的根目录中,尽管您可以随意调用它。

然后,您可以通过启动 Node.js将文件中的变量设置环境变量,并将 --env-file 标志指向您的 .env 文件。加载时,变量可用作 的属性 process.env

$ node --env-file .env
Welcome to Node.js v20.6.0.
Type ".help" for more information.
> console.log(process.env.PASSWORD)
supersecret
undefined
> console.log(process.env.API_KEY)
84de8263ccad4d3dabba0754e3c68b7a
undefined

支持的功能

dotenv 相比,现在的支持是相当基本的。例如:

node --env-file .env --env-file .env.development

还有更多的工作要做,其中一些功能可能会添加。您可以在此处关注 GitHub 上的讨论

缺点

从 20.6.0 版本开始,文档指出,“如果在环境和文件中定义了相同的变量,则环境中的值优先。这是所有 dotenv 包默认的工作方式。但是,目前 Node.js实现并非如此,文件中的 .env 变量将覆盖环境。 有一个 PR 请求来纠正这个问题

Node.js 实现的好处

尽管此实现缺少某些功能,但与使用第三方包相比,它具有一些优势。Node.js 在文件启动时加载和分析 .env 文件,因此您可以包含配置 Node 本身的环境变量例如 NODE_OPTIONS

因此,您可以拥有一个如下所示 .env 的文件:

NODE_OPTIONS="--no-warnings --inspect=127.0.0.1:9229"

然后,当您运行时 node --env-file=.env ,该进程将运行而不发出警告,它将激活 IP 地址 127.0.0.1:9229 上的检查器。

注意:不允许您放入 NODE_OPTIONS="--env-file .env" 。避免无限循环

C++ 垃圾回收函式库 Oilpan

另外,Node.js C++扩充套件现在支持V8中的C++垃圾回收库Oilpan,并向开发者提供新的工具和指南,以便更好地整合和管理C++与JavaScript间的物件和资源。 也就是说,在20.6之后,Node.js添加一种新颖且更有效率的C++内存管理方法,不过,原有方法仍然可用。

V8团队在2021年释出Oilpan,其特点在于提供一种追踪垃圾收集机制,能够透过标记对象来确定活对象,并于回收阶段回收死掉的对象,Oilpan也支持对某些物件进行堆碎片整理(Compaction)功能。 整体来说,Oilpan简化了程序开发模型,有助解决内存泄漏和使用后释放的问题

现在替Node.js应用程序编写C++扩充套件的开发者,也可以使用Oilpan,但官方提醒,Node.js只是打包了来自V8的Oilpan函式库,他们无法保证ABI(Application Binary Interface)稳定性,但是因为Oilpan在Chromium中经历多年考验,他们也认为不太可能会破坏ABI。 之后当Oilpan有足够多的外部和内部采用时,官方便会考虑将其列入ABI稳定性保证中。

Node.js 20.6也在其模块系统加入了一个新的API,提供新方法让开发者可以指定档案,自定义模块的Hook,这项新功能提供了一个灵活且强大的方法,允许开发者自定义模块加载和解析行为,并且在主应用执行绪和自定义Hook执行绪间,建立沟通渠道。

Node.js 不断改进中

去试试 Node.js 版本 20.6.0!版本 20 带来了新功能,例如稳定的测试运行器、模拟计时器和现在 .env 的文件支持,以及许多其他升级、修复和改进。版本 20 在 10 月成为 Node 的活动 LTS 版本.js,因此现在是测试这些新功能并开始考虑升级应用程序以利用的好时机。

原文地址:https://blog.csdn.net/jslygwx/article/details/132732621

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_2799.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注