An Interest In:
Web News this Week
- April 2, 2024
- April 1, 2024
- March 31, 2024
- March 30, 2024
- March 29, 2024
- March 28, 2024
- March 27, 2024
January 25, 2022 12:56 pm GMT
Original Link: https://dev.to/sktanwar2014/load-or-set-environment-variables-in-nodejs-without-dotenv-or-any-third-package-6io
Load or set environment variables in Node.js without dotenv or any third package.
Hello guys, If you are also trapped in the use of dotenv variables then this is for you a complete solution to load/set/manage environment variables in Node.js with the use of javascript & without the burdon of dotenv or any third package.
You can use it in Dev, Prod, UAT or any other environment without any issue.
Step 1: create a server
index.js
const http =require('http'); const { port, environment } = require('./config').getEnv(); http.createServer().listen(port, async () => { console.log(`env: ${environment}`); console.log(`server is running on ${port} port`); }).on('error', (e) => console.log(e));
Step 2: configuration of environement variables
config.js
const fs = require('fs'); const path = require('path'); const { parseBuffer } = require('./helpers/parse'); const getEnv = () => { const envFilePath = path.join(__dirname, '.env'); const bufferEnv = fs.readFileSync(envFilePath); const envObject = parseBuffer(bufferEnv); Object.keys((envObject || {})).map(key => { if(!process.env[key] && process.env[key] !== envObject[key]){ process.env[key] = envObject[key]; } }); const version = process.env.VERSION; const environment = process.env.ENVIRONMENT; const port = process.env.PORT; return { version, environment, port, } } module.exports = { getEnv }
Step 3: create .env file & define your variables
.env
VERSION=v1.0.0ENVIRONMENT=localPORT=3001
Step 4: A function to parse buffer data into object
parse.js
const NEWLINES_MATCH = /\r
|
|\r/ const NEWLINE = '
' const RE_INI_KEY_VAL = /^\s*([\w.-]+)\s*=\s*(.*)?\s*$/ const RE_NEWLINES = /\
/g const parseBuffer = (src) => { const obj = {}; src.toString().split(NEWLINES_MATCH).forEach((line, idx) => { // matching "KEY" and "VAL" in "KEY=VAL" const keyValueArr = line.match(RE_INI_KEY_VAL); // matched? if(keyValueArr != null){ const key = keyValueArr[1]; // default undefined or missing values to empty string let val = (keyValueArr[2] || ''); const end = val.length -1; const isDoubleQuoted = val[0] === '"' && val[end] === '"'; const isSingleQuoted = val[0] === "'" && val[end] === "'"; // if single or double quoted, remove quotes if(isSingleQuoted || isDoubleQuoted) { val = val.substring(1, end); // if double quoted, expand newlines if(isDoubleQuoted){ val = val.replace(RE_NEWLINES, NEWLINE); } } else { // remove surrounding whitespace val = val.trim(); } obj[key] = val; } }); return obj; } module.exports = { parseBuffer }
Conclusion
Try this to overcome the burdon of dotenv & manage everything on yourbehafe.
If you got any issue during implementation of this code just Click to watch the video of solution
Original Link: https://dev.to/sktanwar2014/load-or-set-environment-variables-in-nodejs-without-dotenv-or-any-third-package-6io
Share this article:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To