You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中dotenv读取.env文件时$符号后内容丢失的解决方法咨询

解决dotenv中环境变量值含$时内容被截断的问题

这个问题我之前踩过坑!核心原因是dotenv默认会把$当作环境变量插值标记——它会尝试把$后面的内容当作已存在的环境变量名去替换,如果找不到对应变量,就会把这部分替换成空字符串,所以你才会只拿到SomeValue。

下面给你两个直接有效的解决方法:

  • 用单引号包裹变量值
    把.env文件里的配置改成这样:

    key='SomeValue$kld'
    

    单引号会让dotenv完全跳过对内部$的插值解析,直接保留原始内容,读取后就能拿到完整的SomeValue$kld。

  • 用双$转义单个$
    如果不想用引号包裹,就把单个$替换成两个$:

    key=SomeValue$$kld
    

    dotenv的解析规则会自动把$$解析成单个$,同时保留后面的所有内容,最终读取结果也是完整的目标值。

为什么你之前的方法没用?

  • 关于\$转义:dotenv里反斜杠\是用来转义换行符、制表符这类特殊字符的,并不适用于$,所以\$不会被当作转义处理,反而会保留\的同时,依然解析$后面的内容。
  • 关于Base64编码:Base64本身的字符集里没有$,所以编码后的内容应该不会触发这个问题,可能是你在编码/解码的环节出了小差错?不过不管怎样,上面两种直接处理原始值的方法更简单可靠。

可以用这段代码验证一下:

require('dotenv').config();
console.log(process.env.key); // 现在应该输出完整的SomeValue$kld

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 13:07:35