You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使dotenv解析的process.env.MyEnvVar支持多行格式?

解决dotenv读取多行环境变量时转义字符未解析的问题

这个问题的核心在于终端shell和dotenv对转义字符的处理逻辑不同,咱们分两种场景来解决:

场景1:直接在终端export环境变量

如果你是在Mac终端(bash/zsh)里直接设置环境变量,普通双引号里的\n不会被shell解析为实际换行,只会被当作普通的两个字符(\n)传递给Node.js。

要让shell把\n解析成真实的换行,需要用shell的ANSI-C引号语法$'...'):

export MyEnvVar=$'new\nline'

这样设置后,再运行你的Node.js代码,process.env.MyEnvVar就会输出带换行的内容了。

场景2:使用.env文件(推荐,更易维护)

dotenv官方文档里提到的多行变量支持,是针对.env文件的。你需要把变量值用双引号包裹,dotenv会自动解析里面的转义字符(包括\n)。

写法1:直接换行

.env文件里这样写:

MyEnvVar="new
line"

写法2:使用\n转义

也可以用\n来表示换行,同样用双引号包裹:

MyEnvVar="new\nline"

两种写法都能让dotenv正确解析为多行字符串,运行你的Node.js代码就能得到和console.log("new\nline")一样的输出。

验证代码

不管用哪种方式设置,运行你的代码:

require("dotenv").config();
console.log("new\nline");
console.log("");
console.log("");
console.log(process.env.MyEnvVar);

都会得到一致的换行输出:

new
line


new
line

内容的提问来源于stack exchange,提问作者Jamil

火山引擎 最新活动