Heroku - Vite:环境变量未定义

bihw5rsg  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(157)

我有一个Vue - Vite应用程序,在Heroku中使用Nginx提供服务。它成功地构建和部署,但我在main.ts文件中遇到了一个问题。在这个文件中,我访问了一个env变量,它应该返回一个我在Config Vars中设置的键。但是,变量返回的是undefined,而不是假定的值。一些附加信息:
1.应用程序处于生产模式

  1. Env var被正确命名和访问(VITE_SOME_VAR而不是SOME_VAR
    1.我没有.env.production文件(我一直看到提到这个。我不确定它是否与问题有关,所以我在这里提到它)
    1.这在当地是有效的
    main.ts中的示例代码:
const app = createApp(App);
app.use(vue3GoogleLogin, {
  // when adding a debug line, it returns undefined
  clientId: import.meta.env.VITE_GOOGLE_CLIENT_ID
})
app.use(router);
app.mount('#app');
prdp8dxp

prdp8dxp1#

经过几个小时的研究,我终于找到了解决办法。有关更多上下文:
我使用Container stack来部署我的应用程序与Docker和heroku.yml来构建镜像。这里的主要问题是,配置变量只能在运行时访问。Vite必须在构建阶段访问这些变量,而不是运行时,这就是为什么当应用程序部署时,import.meta.env.VITE_SOME_VAR返回undefined
因此,解决方案是放弃Docker策略,依靠Heroku的构建包,因为它们基本上允许在构建阶段访问env变量。更多信息here .
对于任何需要如何在Heroku上部署Vite的指南的人,您可以参考此SO answer。不过,我还是建议你部署到Vercel。

相关问题