【问题标题】:Heroku Config Variables - Are they visible via process.env in Vue.js?Heroku 配置变量 - 它们是否通过 Vue.js 中的 process.env 可见?
【发布时间】:2020-09-30 12:24:19
【问题描述】:

我正在将带有 node.js 服务器的 vue.js 客户端部署到 Heroku 并解决问题。

我在 Heroku 应用程序(使用管理界面)中定义了几个 oauth“配置变量”,我可以在命令行中使用 heroku config 看到它们,但它们没有显示在应用程序中。

我在 router.js 中检查process.envprocess.env 只包含 NODE_ENV="production" 和 BASE_URL="/" 。

所以,我有一个想法。嗯。在 vue.js 开发过程中,不能使用 dotenv,必须将 .env 中的常量定义为“VUE_APP_XXX”,因此:VUE_APP_MY_VAR=YOWASSUP,vue cli 会将它们加载到process.env。昨天,我将我所有的 heroku 配置变量定义为“VUE_APP_...”,然后今天更改了它们,这样我就可以在我的 .env 中使用“VUE_APP_XXX”,并为 Heroku 配置变量使用“XXX”格式。聪明啊!?

嗯,不。这就引出了我的问题。我刚刚测试过,所有 Heroku 定义的 vue.js 变量必须以“VUE_APP_...”模式命名,以便解析并放置在 process.env 中。

我认为这不是预期的行为。我知道 VUE_APP_... 模式是相当新的。这是 vue.js 中的错误,还是我错过了备忘录?我不希望它在生产中的行为与在 dev 中的行为相同,我当然也不希望 vue.js 应用程序忽略 Heroku 定义的常量。我已经搜索和搜索,但在任何地方都没有看到任何关于此的内容。

此外,为了查看更新的 Heroku 配置变量,您必须重新编译 slug。 Heroku 关于配置变量触发重建的报告是不真实的:

来自 Heroku doco:

每当您使用任何方法设置或删除配置变量时,您的应用都会重新启动并创建新版本。

就我有限的经验而言,上述陈述似乎是不正确的。

【问题讨论】:

    标签: vue.js heroku config constants production


    【解决方案1】:

    我有同样的问题。我正在搜索如何将 Heroku 配置变量作为环境变量,因为它们没有被注入到 process.env 中。 问题是我没有在配置变量VUE_APP_ 上添加正确的前缀。在我更改了配置变量名称并重新部署它工作的应用程序之后。 如果您正在从 .env 文件中读取变量,您是否尝试过:

    require('dotenv').config();
    

    【讨论】:

    • 是的,这是我必须使用的,但我很惊讶环境变量的“生产”行为与开发行为相同 - 我希望生产环境接受所有配置来自生产环境的变量——无论是命令行还是 Heroku,或者其他什么。我不希望必须添加“VUE_APP_”模式来设置环境变量(常量)。
    • 我明白你的意思。来自文档:cli.vuejs.org/guide/mode-and-env.html#environment-variablesNote that only NODE_ENV, BASE_URL, and variables that start with VUE_APP_ will be statically embedded into the client bundle with webpack.DefinePlugin. It is to avoid accidentally exposing a private key on the machine that could have the same name.
    • 有趣。 VUE_APP_ 前缀要求让我非常困扰,但我现在很感激上面的安全问题。谢谢你分享这个。
    猜你喜欢
    • 2018-05-13
    • 2013-11-03
    • 2014-10-13
    • 2013-04-01
    • 1970-01-01
    • 2020-01-05
    • 2015-08-21
    • 1970-01-01
    • 2020-01-20
    相关资源
    最近更新 更多