"dotenv: error when sourcing '.env' file"?

"dotenv: error when sourcing '.env' file"?

每次我 cd 使用终端或 iTerm2 的特定目录(我是 运行 Macos 10.14.5,Node 12.13.0),我都会收到以下错误,似乎是抱怨我的团队提供给我的“.env”文件。他们没有得到错误。

.env:22: parse error near '}'  
dotenv: error when sourcing '.env' file 
.env:22: parse error near '}'

第 22 行,似乎导致错误的是

COOKIE_SETTINGS={"isSecure": false, "isSameSite": false, "isHttpOnly": true, "encoding": "base64json", "path": "/"}

知道如何解决这个问题吗?感谢您的任何见解。

您不能在 .env 文件中存储对象。 解决方案是: 字符串化 JSON 对象并保存为环境变量。然后在需要对象时解析并使用它。

另一个解决方案是这样写变量:

COOKIE_SETTINGS_IS_SECURE = false
COOKIE_SETTINGS_IS_SAME_SITE = false
...

这似乎是解析环境时的错误。 我认为 env 只支持这种情况下的字符串或数字。 也许你可以在 .env

中使用
COOKIE_SETTINGS="{'isSecure': false, 'isSameSite': false, 'isHttpOnly': true, 'encoding': 'base64json', 'path': '/'}"

在JS中只需使用JSON.parse返回Object

cookieSettings= process.env.DB_HOST ? JSON.parse(process.env.DB_HOST) : null;