在运行时将环境变量传递到Vue App

ozxc1zmp  于 2022-09-20  发布在  Kubernetes
关注(0)|答案(0)|浏览(160)

如何访问Vue中的环境变量,这些变量是在运行时而不是在构建期间传递给容器的?

堆栈如下:

  • VueCLI 3.0.5
  • Docker
  • 库伯内斯

在Stackoverflow和其他地方有建议的解决方案,可以使用.env文件传递变量(和使用模式),但这是在构建时,会被烘焙到docker映像中。

我想在运行时将变量传递给Vue,如下所示:

  • 创建Kubernetes ConfigMap(我理解正确)
  • 运行部署YAML文件时,将ConfigMap值传入K8s pod env变量(我理解正确)
  • 从上面创建的环境变量读取,例如。VUE_APP_MyURL,并在我的Vue应用程序中对该值执行一些操作(我搞错了)

我在helloworld中尝试了以下内容。vue:

<template>
<div>{{displayURL}}
  <p>Hello World</p>
</div>
</template>
<script>
export default {  
    data() {
        return {
            displayURL: ""
        }
    },
    mounted() {
        console.log("check 1")
        this.displayURL=process.env.VUE_APP_ENV_MyURL
        console.log(process.env.VUE_APP_ENV_MyURL)
        console.log("check 3")
    }
}
</script>

我在控制台日志中返回“未定义的”,并且HelloWorld页面上没有显示任何内容。

我还尝试将值传递到vue.config文件中并从那里读取它。在console.log中得到相同的“unfined”结果

<template>
<div>{{displayURL}}
  <p>Hello World</p>
</div>
</template>
<script>
const vueconfig = require('../../vue.config');
export default {  
    data() {
        return {
            displayURL: ""
        }
    },
    mounted() {
        console.log("check 1")
        this.displayURL=vueconfig.VUE_APP_MyURL
        console.log(vueconfig.VUE_APP_MyURL)
        console.log("check 3")
    }
}
</script>

其中vue.config如下所示:

module.exports = {
    VUE_APP_MyURL: process.env.VUE_APP_ENV_MyURL
}

如果我将一个值硬编码到vue.config文件中的VUE_APP_MyURL中,它将在HelloWorld页面上成功显示。

当我询问VUE_APP_ENV_MyURL时,它成功地填充了正确的值:kubectl Describe pod

Process.env.VUE_APP_MyURL似乎没有成功检索值。

不管它的价值是什么。我能够成功地使用cess.env.VUE_APP_3rdURL在运行时将值传递到Node.js应用程序。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题