首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态访问带有参数的env变量

动态访问带有参数的env变量
EN

Stack Overflow用户
提问于 2021-11-09 10:50:18
回答 1查看 298关注 0票数 1

我正在尝试编写一个只返回env变量内容的小Vue插件。类似于PHPs的env()方法。上下文:我需要多个组件中的一个url,显然我把它放在了.env文件中,因为它将来可能会改变。但是,不能在组件模板中使用process.env,因为:Property or method "process" is not defined on the instance but referenced during render.

这就是我试图做的:我在一个挂载的钩子中调用原型函数,如:console.log('test: ' + this.env('MIX_COB_PARTNER_URL'));

代码语言:javascript
复制
import _get from "lodash/get";

const Env = {
    // eslint-disable-next-line
    install(Vue, options) {
        Vue.prototype.env = function (name) {
            console.log(name); // "MIX_VARIABLE"
            console.log(typeof name); // string

            // variant 1
            return process.env[name]; // undefined

            // variant 2
            return process.env["MIX_VARIABLE"]; // "works" but isnt dynamic obviously

            // variant 3-5 with lodash
            return _get(process.env, name); // undefined
            // or
            return _get(process, 'env[' + name + ']'); // undefined
            // or
            return _get(process.env, '[' + name + ']'); // undefined, worth a try lol
            
            // variant 6
            const test = "MIX_VARIABLE"
            return process.env[test]; // again just for the sake of trying
        }
    }
}

export default Env;

我知道object[variable]通常工作得很好。但无论如何,在这种情况下,这并不是因为process.env在没有键的情况下被访问时是空的,而[name]列表是“直接”的,就像.MIX_VARIABLE那样。

这不管用吗?我已经研究并发现了一些人(例如,在这里的SO),建议这种类型的访问(process.env[variable]),所以我不确定。

EN

回答 1

Stack Overflow用户

发布于 2022-01-10 23:03:22

我相信您的环境变量名需要从VUE_APP_开始,以便被Vue的环境变量处理所获取。那么,也许把MIX_VARIABLE重命名为VUE_APP_MIX_VARIABLE?(见https://cli.vuejs.org/guide/mode-and-env.html#environment-variables)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69896807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档