Behaviour deviates from Node dotenv
Author: harishnair96Created Feb 26, 2025Updated Aug 22, 2026
I am using the following code to compare the difference in behaviour.
require('dotenv').config()
console.log(process.env.TEST_ENV)package main
import (
"fmt"
"os"
"github.com/joho/godotenv"
)
func main() {
if err := godotenv.Load(); err != nil {
fmt.Fprintln(os.Stderr, err)
}
fmt.Println(os.Getenv("TEST_ENV"))
}Double quotes without escape
TEST_ENV="test"test"Node dotenv worked but godotenv failed to even parse the env file.
Double quotes with escape
TEST_ENV="test\"test"Node dotenv parsed the value literally but gotdotenv used
\to escape the double quote.Exclamation mark with escape
TEST_ENV="test\!test"Node dotenv parsed the value literally but godotenv used
\to escape the exclamation mark.An additional point here is that both the libraries parses exclamation marks without escape as well.
TEST_ENV="test!test"However godotenv escapes exclamation during marshalling.
Source: joho/godotenv