ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

5分钟上手env-var:Node.js环境变量读取、校验与类型转换完整教程

5分钟上手env-var:Node.js环境变量读取、校验与类型转换完整教程 5分钟上手env-varNode.js环境变量读取、校验与类型转换完整教程【免费下载链接】env-varVerification, sanitization, and type coercion for environment variables in Node.js项目地址: https://gitcode.com/gh_mirrors/en/env-varenv-var是一个轻量级约 4.7kB、零依赖的Node.js 环境变量工具库帮你一站式完成环境变量的读取、校验验证/净化与类型转换并原生支持 TypeScript。无论是数据库密码、端口号还是 JSON 配置它都能在应用启动时就快速失败fail-fast用友好的错误信息告诉你哪里配错了避免带病上线。一、为什么需要 env-var手动读取process.env的常见痛点❌ 忘配变量时拿到的是undefined错误延迟到运行深处才爆发❌ 环境变量永远是字符串5432不是数字、true不是布尔❌ 端口号没做范围检查配错也不报错❌ 日志里不小心打印出密码、密钥等敏感信息env-var 用链式 API 一次性解决这些问题。二、快速安装npm install env-var # 或使用 yarn yarn add env-var三、5分钟掌握核心用法1. 读取变量 必填校验const env require(env-var); // 变量未设置时直接抛错可选 const PASSWORD env.get(DB_PASSWORD).required().asString();2. 设置默认值// 未设置 PORT 时回退到 5432并校验在 0-65535 范围内 const PORT env.get(PORT).default(5432).asPortNumber();3. 类型转换链式调用// Base64 解码 转字符串 const KEY env.get(API_KEY).convertFromBase64().asString(); // 转正整数 const LIMIT env.get(MAX_CONNECTIONS).asIntPositive();完整的转换方法清单如asFloat()、asJson()、asRegExp()、asEnum()等见 API.md。四、常用类型转换 API 速查表 方法说明asString()转为字符串最常用asInt()/asIntPositive()/asIntNegative()转整数 / 正整数 / 负整数asFloat()/asFloatPositive()转浮点数 / 正浮点数asPortNumber()转端口号校验 0-65535 范围asBool()/asBoolStrict()转布尔值宽松 / 严格模式asArray()按分隔符拆成数组asJson()/asJsonArray()/asJsonObject()解析 JSONasEmailString()校验邮箱格式asUrlString()/asUrlObject()校验并转 URLasRegExp()转正则表达式asEnum()校验值在枚举范围内这些访问器accessor的实现分别位于 lib/accessors/ 目录下例如端口号校验逻辑在 lib/accessors/port.js邮箱校验在 lib/accessors/email-string.js。五、快速失败 友好报错 env-var 的核心理念是Fail Fast配置错了就在启动时报错并且给出示例值帮你快速定位env-var: ADMIN_EMAIL is a required variable, but it was not set. An example of a valid value would be adminexample.com通过.example()就能为变量附上示例说明详见 API.md 的example(string)章节。错误捕获写法参考 example/catch-error.js 与 example/catch-error-promise.js。六、开启日志排障更直观 出于安全考虑日志默认关闭防止意外打印敏感信息。需要时通过from()传入内置logger即可开启NODE_ENV为prod或production时自动静默const { from, logger } require(env-var); const env from(process.env, {}, logger); const API_KEY env.get(API_KEY).required().asString();运行 example/logging.js 的效果如下可以看到每次读取、默认值回退、解析结果的全过程如果想接入 pino 等第三方日志框架例如只输出 trace 级别EXAMPLE.md 的 Custom logging 一节有完整写法底层实现参考 lib/logger.js。七、TypeScript 与前端项目支持 TypeScript自带类型定义env-var.d.ts编译期就能保证类型安全import * as env from env-var; const PORT: number env.get(PORT).required().asIntPositive();Web 前端React、Vue、Vite 等工具链通常不暴露process.env用from()传入自定义对象即可import { from } from env-var; const env from({ BASE_URL: import.meta.env.BASE_URL });更多示例见 example/ 目录含 example/typescript.ts。八、与 dotenv 自由搭配两者零耦合按需组合先require(dotenv).config()加载.env文件再用 env-var 校验或用node -r dotenv/config app.js预加载。具体做法见 EXAMPLE.md 的 dotenv 章节。总结特性说明轻量零依赖压缩后约 4.7kB快速失败配置缺失/格式错误时立即抛错类型转换字符串、整数、端口、JSON、URL、枚举等 20 访问器类型安全原生 TypeScript 支持安全日志默认关闭防止泄露密钥核心源码入口在 env-var.js变量链式 API 的实现见 lib/variable.js。5 分钟看完本文你已经可以把它用在任何 Node.js 项目里了 【免费下载链接】env-varVerification, sanitization, and type coercion for environment variables in Node.js项目地址: https://gitcode.com/gh_mirrors/en/env-var创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表