文章插图
近日,Node.js 团队核心成员 Ulises Gascón 在社交平台表示,Node.js 20.6 版本将原生支持 .env 文件,该版本计划于 8 月 28 日发布 。下面就来看看 .env 文件是什么,有什么作用,如果在浏览器环境中使用 .env.
文章插图
Node.js 原生支持 .env从 Node.js v20.6.0 开始,Node.js 支持使用 .env 文件来配置环境变量 。配置文件应遵循 INI 文件格式,每一行都包含一个环境变量的键值对 。通过这个新的特性,就无需再使用第三方模块来加载 .env 中的环境变量了 。
要使用预定义的配置初始化 Node.js 应用,请使用以下 CLI 命令:
node --env-file=config.env index.js 。
例如,当应用初始化时,可以使用 process.env.PASSword 访问以下环境变量:PASSWORD=nodejs
除了环境变量,这个更改还允许在 .env 文件中直接定义 NODE_OPTIONS环境变量,无需将其包含在 package.json 中 。.env.env 文件用于配置环境变量 。环境变量是在运行应用程序时向操作系统或应用传递的值,用于控制应用的行为和设置 。.env 文件通常包含敏感信息(如数据库连接字符串、API 密钥等),因此它们被排除在代码版本控制系统之外,以保护这些敏感数据 。
.env 文件使用键值对的格式,每一行都是一个环境变量的定义 。例如:
DB_HOST=localhostDB_USER=rootDB_PASSWORD=123456API_KEY=abcdef123456
在 Node.js 中有一个 process全局变量,其中的env属性可以访问系统中的环境变量 。在应用中,Node.js 无法自行维护本地环境变量,需要借助第三方库(如dotenv,它是一个零依赖的模块)来加载.env文件,并将其中的环境变量注入到 process.env 对象中 。通过这种方式,可以轻松地从程序中访问这些环境变量,而不需要显式地硬编码它们 。
文章插图
要通过 dotenv来加载 .env 文件,需要先安装 dotenv:
npm i -S dotenv
以下是使用 dotenv 库加载 .env 文件的示例代码:require('dotenv').config(); // 加载 .env 文件console.log(process.env.DB_HOST); // 访问环境变量console.log(process.env.API_KEY);
这里,dotenv 库的 config() 方法会读取.env文件,并将其中的环境变量加载到 process.env 对象中 。然后,可以通过 process.env 对象访问这些环境变量的值 。使用 .env 文件的好处是,可以根据不同的环境(开发、测试、预发、生产环境等)设置不同的配置值,而不需要直接修改代码 。这样做可以使应用更加灵活和可移植 。
浏览器环境在 Node.js 环境中,可以使用 process.env 来获取环境变量的值 。但是,在浏览器环境下,process.env 是不可用的,无法直接在浏览器中获取环境变量的值 。
幸运的是,通过使用打包工具,可以将环境变量暴露给浏览器运行时环境 。下面我们来看一下如何在 Vite 和 webpack 中实现这一目标 。
ViteVite 通过 import.meta.env 对象来暴露一组预定义的变量:
- import.meta.env.MODE:值为 'development' 或 'production' 。
- import.meta.env.PROD:在生产模式下为 true 。
- import.meta.env.DEV:在开发模式下为 true 。
- import.meta.env.SSR:一个布尔值,表示应用是否在服务端运行 。
- import.meta.env.BASE_URL:基础 URL 。
例如,如果有一个如下所示的 .env 文件:
VITE_MY_VAR=value
那么可以在浏览器中通过 import.meta.env.VITE_MY_VAR 来访问这个值,它的结果将是 'value' 。注意,Vite 只会公开以 VITE_ 前缀开头的变量(但这可以进行配置) 。Vite 在如何访问环境变量方面有一个详细的指南:https://cn.vitejs.dev/guide/env-and-mode.html 。
WebpackWebpack 中内置的 EnvironmentPlugin 插件可以用来暴露环境变量 。
推荐阅读
- 李克勤、梁静茹终于发声,刘德华回应李荣浩沉默原因,更让人愤怒
- 54岁的朱之文不再被世界宽容,终于还是“深陷泥潭”,结果无法自拔!
- 小s终于出手了:休想离婚!有爱无性找小三,为了3女儿绝不放手
- 当52岁胡兵和53岁郑嘉颖同框,才终于承认,港星的保养真的太绝了
- 好声音终于停播!相比其他导师的沉默,刘欢陈奕迅的发声才是良心
- 找工作之终于拿到offer之旅
- 陈坤私生子的生母终于露面了,曝光之后,网友早猜到了
- 好声音终于停播!相比那英的贪婪,刘欢11年前的发言才是明智
- 6年了,终于水落石出了...
- 央视开播!又一新剧来袭,主演都是熟脸,网友:终于又有剧可追了