diff --git a/src/node_dotenv.cc b/src/node_dotenv.cc index cd761aab70c..9e0205b4e62 100644 --- a/src/node_dotenv.cc +++ b/src/node_dotenv.cc @@ -129,6 +129,7 @@ void Dotenv::ParseContent(const std::string_view input) { key = content.substr(0, equal); content.remove_prefix(equal + 1); key = trim_spaces(key); + content = trim_spaces(content); if (key.empty()) { break; diff --git a/test/fixtures/dotenv/valid.env b/test/fixtures/dotenv/valid.env index 963c4c848a4..120488d5791 100644 --- a/test/fixtures/dotenv/valid.env +++ b/test/fixtures/dotenv/valid.env @@ -38,6 +38,7 @@ RETAIN_INNER_QUOTES={"foo": "bar"} RETAIN_INNER_QUOTES_AS_STRING='{"foo": "bar"}' RETAIN_INNER_QUOTES_AS_BACKTICKS=`{"foo": "bar's"}` TRIM_SPACE_FROM_UNQUOTED= some spaced out string +SPACE_BEFORE_DOUBLE_QUOTES= "space before double quotes" EMAIL=therealnerdybeast@example.tld SPACED_KEY = parsed EDGE_CASE_INLINE_COMMENTS="VALUE1" # or "VALUE2" or "VALUE3" diff --git a/test/parallel/test-dotenv.js b/test/parallel/test-dotenv.js index 88afd58b5d7..3c81bf98782 100644 --- a/test/parallel/test-dotenv.js +++ b/test/parallel/test-dotenv.js @@ -80,3 +80,5 @@ assert.strictEqual(process.env.DONT_EXPAND_UNQUOTED, 'dontexpand\\nnewlines'); assert.strictEqual(process.env.DONT_EXPAND_SQUOTED, 'dontexpand\\nnewlines'); // Ignore export before key assert.strictEqual(process.env.EXPORT_EXAMPLE, 'ignore export'); +// Ignore spaces before double quotes to avoid quoted strings as value +assert.strictEqual(process.env.SPACE_BEFORE_DOUBLE_QUOTES, 'space before double quotes');