¿Cómo puedo configurar una variable ambiental en node.js?

93

¿Cómo puedo configurar una variable ambiental en node.js?

Preferiría no depender de nada específico de la plataforma, como ejecutar la exportación o el conjunto de cmd.exe.

abrkn
fuente
Puede leer esta respuesta stackoverflow.com/a/57509175/11127383
Daniel Danielecki

Respuestas:

141

Puede configurar sus variables de entorno en process.env:

process.env['VARIABLE'] = 'value';

-O-

process.env.VARIABLE = 'value';

Node debe ocuparse de las especificaciones de la plataforma.

lanzz
fuente
4
No creo que debas hacerlo var process = require('process'), el proceso es una variable global presente.
alessioalex
85
Sin embargo, tenga en cuenta que esto solo establecerá la variable dentro de su proceso de nodo y cualquier proceso hijo que llame; por ejemplo, no dejará la variable configurada en el shell cuando el proceso del nodo finalice (cambiar el entorno de un proceso padre depende mucho del sistema y no siempre es posible).
ebohlman
2
¿Alguien ofrece una opinión sobre process.env.variable vs global.variable?
Scott Silvi
3
process.env.VARIABLEestá bien si el nombre de la variable es una constante conocida, mientras que process.env['VARIABLE']funciona en cualquier caso; La pregunta original no especificaba suficientes detalles, por lo que el ejemplo más versátil parecía más adecuado.
Lanzz
3
@BillMorris no, no es posible que ningún proceso modifique el entorno de su padre
lanzz
3

Primero debe instalar este paquete: - https://github.com/motdotla/dotenv [ npm install dotenv]

Luego, debe crear un archivo .env en el directorio raíz de su proyecto, y allí puede agregar variables como las siguientes:

NODE_ENV=PRODUCTION
DATABASE_HOST=localhost

Ahora puede acceder fácilmente a estas variables en su código como se muestra a continuación: -

require('dotenv').config()
console.log(process.env.NODE_ENV);

Funcionó para mí, espero que eso ayude.

jagjeet
fuente
1
¿Qué tan seguro es el archivo .env utilizado por dotenv? Si los secretos son texto sin formato dentro de cadenas de entorno en el archivo .env, ¿es más seguro que tenerlos como texto sin formato en el código de su nodo? ¿Cuál es claramente un no-no?
Ric
0

node v14.2.0 Para establecer la variable env, primero cree un nombre de archivo config.env en el directorio de inicio de su proyecto y luego escriba todas las variables que necesita, por ejemplo

config.env

NODE_ENV=development
PORT=3000
DATABASE=mongodb+srv://lord:<PASSWORD>@cluster0-eeev8.mongodb.net/tour-guide?retryWrites=true&w=majority
DATABASE_LOCAL=mongodb://localhost:27017/tours-test
DATABASE_PASSWORD=UDJUKXJSSJPWMxw

ahora instale dotenv desde npm, dotenv descargará su trabajo

npm i dotenv

ahora en el script de inicio de su servidor, en mi caso es server.js use doenv para cargar variables env.

const dotenv = require('dotenv');
dotenv.config({ path: './config.env' });
const app = require('./app'); // must be after loading env vars using dotenv

//starting server
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`app running on port ${port}...`);
});

Estoy usando express, todo mi código express en app.js, escribiendo aquí para su referencia

const express = require('express');
const tourRouter = require('./route/tourRouter');
const userRouter = require('./route/userRouter');

if (process.env.NODE_ENV === 'development') {
  console.log('mode development');
}
app.use(express.json());

app.use('/api/v1/tours', tourRouter);
app.use('/api/v1/users', userRouter);

module.exports = app;

ahora inicie su servidor usando la consola, estoy usando nodemon , puede instalarlo desde npm;

nodemon server.js
Señor
fuente