Get access to environment variables dynamically using parameters

I'm currently developing a Vue plugin to retrieve the content of environment variables, similar to PHP's env() method. Background: I require a URL in multiple components and have stored it in the .env file anticipating potential future changes. However, using process.env directly within component templates results in an error message stating: "Property or method 'process' is not defined on the instance but referenced during render."

This is my current approach: I am invoking the prototype function within a mounted hook like so:

console.log('test: ' + this.env('MIX_COB_PARTNER_URL'));

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

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

            // option 2
            return process.env["MIX_VARIABLE"]; // constant value, not dynamic

            // other options utilizing lodash
            return _get(process.env, name); // undefined
            // or
            return _get(process, 'env[' + name + ']'); // undefined
            // or
            return _get(process.env, '[' + name + ']'); // undefined
            
            // option 6
            const test = "MIX_VARIABLE"
            return process.env[test]; // just for experimentation purposes
        }
    }
}

export default Env;

While typically, object[variable] syntax functions as expected, in this case it appears that the empty state of process.env when accessed without a key affects the directness of accessing via [name], similar to .MIX_VARIABLE.

Is this approach ineffective? Despite encountering suggestions online proposing the use of process.env[variable], I remain uncertain.

Answer №1

It is important to remember that when setting environment variables in Vue, they should start with VUE_APP_. Consider changing MIX_VARIABLE to VUE_APP_MIX_VARIABLE to ensure it is recognized by Vue's processing of environment variables. You can find more information about this here: https://cli.vuejs.org/guide/mode-and-env.html#environment-variables

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Retrieve information from deeply nested JSON and showcase using Vue-Multiselect

My goal is to fetch data from the server and present it in Multiselect using nested JSON, which can be done through Vue-Multiselect. Once displayed, I should have the ability to add new tags as needed, essentially updating the data. While I can display o ...

Creating a searchable and filterable singleSelect column in the MUI DataGrid: A step-by-step guide

After three days of working on this, I feel like I'm going in circles. My current task involves fetching data from two API sources (json files) using the useEffect hook and storing them in an array. This array contains a large number of products and a ...

A guide to efficiently pre-rendering secure APIs on a server for Next.js

Currently, I am working on a project that involves fetching data from multiple pages. However, the challenge lies in the fact that all APIs are secured, except for the initial API that fetches data for the home page. Furthermore, all other APIs are protect ...

Storing extensive JSON data with AJAX, jQuery, and Java

Currently, I am utilizing jQuery AJAX to call a server-side method and sending a JSON string to the controller. Everything works smoothly when the JSON size is small, but as soon as it exceeds 7kb, the server side rejects the JSON string. I suspect that t ...

Cannot execute the function test()

I'm just diving into the world of JavaScript and have put together a little fiddle with my code. Check it out here. However, I've run into an issue where removing CDATA makes it work fine in fiddle but causes problems in XHTML editors like Eclip ...

Tips for implementing a selection event in an auto complete dropdown menu:

I am struggling with detecting the selection in this Combobox. For example, if I choose "Massachusetts", I want to be able to access that information. @change call API + populated list - Done ✅ @select doSomething() - Not Done ❌ I have a hard time d ...

Setting session expiration for an HTML page in MVC with JavaScript - A step-by-step guide

I'm working on a HTML page within an MVC framework that includes a button click function. I'm trying to figure out how to redirect the user to the login page if the page remains idle for 30 minutes. I've attempted using the code snippet belo ...

What is the best method for sending a user to a different page when a webhook is triggered by an external API in

In my project using NextJS and the pages router, I encounter a scenario where a user initiates a process through a form that takes approximately 30 seconds to complete. This process is carried out by an external API over which I have no control. Once the p ...

What exactly is the functionality of the jQuery.on() method?

I am curious about the functionality of this function and how it operates. Does it follow these steps: Identify element(s) using their selectors Assign event-handlers to them Execute a setInterval on that selector, consistently delegating and then undeleg ...

The logo image in the React application is having trouble rendering, showing a "Module Parse Failed" error

I am facing an issue while trying to render an image in my React component. The problem arises when I attempt to load and display my Logo within the component. A parse error is being thrown, and I am unsure of the reason for this error: Uncaught Error: Mo ...

PhoneGap switches up the error type with each consecutive run

Why does PhoneGap change errors after every time it is compiled? Sometimes it runs without any issues, but then the same code throws strange errors like parse error or function not found, even though no changes were made to the code. Here is the code that ...

Troubleshooting a JavaScript Script Issue in a NextJs Class

I have been working on my website and decided to incorporate an FAQ page. I used a template for the FAQ section and tried to implement Javascript in my NextJs project, but unfortunately, it's not functioning as expected. var faq = document.getEle ...

Communicating data transfer between two Node.js servers through the use of the Node Serial Port technology

How can I send the message "Hello world" from one nodejs server to another using node-serialport? I have confirmed that the radios connecting the two servers are properly connected as they are displaying buffer information after running my current code. ...

Is it possible to implement UseState in Server-Side-Rendering scenarios?

Is it possible to utilize useState (and other react hooks?) with Server Side Rendering? I keep encountering the following error when attempting to execute the code: TypeError: Cannot read property 'useState' of null. Oddly enough, if I disable ...

construct a table utilizing JSON information

If I have data returned from an ajax call that needs to be processed, a table like the following needs to be created: ID NAME Object Type ============================================== 1 SWT-F1-S32-RTR-1 Network Switch 2 ...

Using React to pass a value through state when handling changes

Trying to implement handleChange and handleSubmit methods for a login page in React. Set username and password values in state, update them when form inputs change, then submit using the updated values. However, values print as undefined in the console. N ...

Utilizing React with Material UI, implement a Select component while disabling the scroll lock and ensuring the menu is positioned relative to

import React from "react"; import "./styles.css"; import Input from "@material-ui/core/Input"; import MenuItem from "@material-ui/core/MenuItem"; import FormControl from "@material-ui/core/FormControl"; import Select from "@material-ui/core/Select"; cons ...

Instructions for importing a CSV file into PostgreSQL with Node.js

Just dipping my toes into the world of node js. I've got a csv file sitting on my local system that I'm eager to upload to my local PostgreSQL Database using node js. Here's what I've been experimenting with: var csv = require(' ...

Trouble with passing a nodejs variable into a nested function

I've been working on the code below but I'm having trouble getting the inner function .each to successfully call res.write with the results from the MongoDB query. At first, I thought the issue might be related to the variable res not being glob ...

Ways to iterate through a JSON formatted array variable using JavaScript

Below is my code snippet, used to plot all the locations fetched from my database onto a Google map. $.ajax({ url:"http://localhost/church_finder/index.php/MapController/search_church", type:'POST', data: ...