Node.js中dotenv读取.env文件时$符号后内容丢失的解决方法咨询
解决dotenv中环境变量值含
$时内容被截断的问题 这个问题我之前踩过坑!核心原因是dotenv默认会把$当作环境变量插值标记——它会尝试把$后面的内容当作已存在的环境变量名去替换,如果找不到对应变量,就会把这部分替换成空字符串,所以你才会只拿到SomeValue。
下面给你两个直接有效的解决方法:
用单引号包裹变量值
把.env文件里的配置改成这样:key='SomeValue$kld'单引号会让dotenv完全跳过对内部
$的插值解析,直接保留原始内容,读取后就能拿到完整的SomeValue$kld。用双
$转义单个$
如果不想用引号包裹,就把单个$替换成两个$:key=SomeValue$$klddotenv的解析规则会自动把
$$解析成单个$,同时保留后面的所有内容,最终读取结果也是完整的目标值。
为什么你之前的方法没用?
- 关于
\$转义:dotenv里反斜杠\是用来转义换行符、制表符这类特殊字符的,并不适用于$,所以\$不会被当作转义处理,反而会保留\的同时,依然解析$后面的内容。 - 关于Base64编码:Base64本身的字符集里没有
$,所以编码后的内容应该不会触发这个问题,可能是你在编码/解码的环节出了小差错?不过不管怎样,上面两种直接处理原始值的方法更简单可靠。
可以用这段代码验证一下:
require('dotenv').config(); console.log(process.env.key); // 现在应该输出完整的SomeValue$kld
内容的提问来源于stack exchange,提问作者Manoj
相关产品推荐
相关产品推荐

