首页 > 解决方案 > Heroku 配置变量 - 它们是否通过 Vue.js 中的 process.env 可见?

问题描述

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

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

我正在检查process.envrouter.js。里面只有process.envNODE_ENV="production" 和 BASE_URL="/" 。

于是,我有了一个想法。嗯。在开发的vue.js中,你不能使用dotenv,你必须在.env中定义你的常量为“VUE_APP_XXX”,因此:VUE_APP_MY_VAR=YOWASSUP,vue cli会将它们加载到.env中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.jsherokuconfigconstantsproduction

解决方案


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

require('dotenv').config();

推荐阅读