Skip to content

Behaviour deviates from Node dotenv #241

@harishnair96

Description

@harishnair96

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"))
}
  1. Double quotes without escape

    TEST_ENV="test"test"

    Node dotenv worked but godotenv failed to even parse the env file.

    Image
  2. Double quotes with escape

    TEST_ENV="test\"test"    

    Node dotenv parsed the value literally but gotdotenv used \ to escape the double quote.

    Image
  3. Exclamation mark with escape

    TEST_ENV="test\!test"

    Node dotenv parsed the value literally but godotenv used \ to escape the exclamation mark.

    Image

    An additional point here is that both the libraries parses exclamation marks without escape as well.

    TEST_ENV="test!test"
    Image

    However godotenv escapes exclamation during marshalling.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions