使用 @quasar/quasar-app-extension-dotenv 时从服务器(不是 .env 文件)读取环境变量

Reading environment variables from server (not .env file) when using @quasar/quasar-app-extension-dotenv

我在开发期间使用 @quasar/quasar-app-extension-dotenv 从本地主机上的 .env 文件加载环境变量。

在生产中,我在 Netlify 上托管项目,当我在 Netlify 仪表板中设置环境变量时,它在程序期间未定义 运行。

我的quasar.extensions.json看起来像这样:

{
  "@quasar/dotenv": {
    "env_development": ".env",
    "env_production": ".env",
    "common_root_object": "none",
    "create_env_files": false,
    "add_env_to_gitignore": false       
  }
}

知道如何从服务器变量加载变量吗?

谢谢

我遇到了同样的问题。我找到了解决这个问题的方法,它不是最好的,但很有效。

我还使用@quasar/quasar-app-extension-dotenv 扩展从文件中读取本地环境变量。我把这个文件添加到 gitignore.

在此之后我写了一个小脚本来创建一个与本地文件同名的文本文件。它看起来像这样(我使用创建文件包来做这个):

var createFile = require('create-file')
let contentToWrite = process.argv[2]

createFile('NameOfLocalFile', contentToWrite, function (err) {
    if (err) console.log(err)
    else console.log('succesfully wrote file')
})

使用此脚本,您可以将环境变量作为参数传递。 在 netlify 上,我添加了一个构建命令,如下所示:

(npm run-script writeEnvFile API_KEY=******) && (quasar build || { sleep 120; false; })

所以总而言之,env 文件不在 github 之外,但我们通过构建命令传递它的数据。就我而言,我只需要 firebase 密钥即可从 firebase 获取所有其他密钥。 因此,如果您需要更多密钥,则必须稍微扩展脚本。 我知道这是一个混乱的解决方案,但这是我为这个问题找到的唯一解决方案。