¿Por qué Process.env.NODE_ENV no está definido?

Resuelto basheps asked hace 12 años • 25 respuestas

Estoy intentando seguir un tutorial sobre NodeJS. No creo que me haya perdido nada, pero cada vez que llamo, el process.env.NODE_ENVúnico valor que obtengo es undefined. Según mi investigación, el valor predeterminado debería ser development. ¿Cómo se establece dinámicamente este valor y dónde se establece inicialmente?

basheps avatar Jun 19 '12 22:06 basheps
Aceptado

process.enves una referencia a su entorno, por lo que debe configurar la variable allí.

Para configurar una variable de entorno en Windows :

SET NODE_ENV=development

en macOS/OS X o Linux :

export NODE_ENV=development
James Tikalsky avatar Jun 19 '2012 15:06 James Tikalsky

consejos

en package.json:

"scripts": {
  "start": "set NODE_ENV=dev && node app.js"
 }

en app.js:

console.log(process.env.NODE_ENV) // dev
console.log(process.env.NODE_ENV === 'dev') // false
console.log(process.env.NODE_ENV.length) // 4 (including a space at the end) 

Entonces, esto puede ser mejor:

"start": "set NODE_ENV=dev&& node app.js"

o

console.log(process.env.NODE_ENV.trim() === 'dev') // true
kenberkeley avatar Aug 15 '2016 02:08 kenberkeley

Para las personas que usan *nix (Linux, OS X, etc.), no hay razón para hacerlo mediante un segundo comando de exportación, puedes encadenarlo como parte del comando de invocación:

NODE_ENV=development node server.js

Más fácil, ¿no? :)

mlaccetti avatar Jun 15 '2014 18:06 mlaccetti

Nos encontramos con este problema cuando trabajábamos con node en Windows.

En lugar de exigir que cualquiera que intente ejecutar la aplicación establezca estas variables, proporcionamos una alternativa dentro de la aplicación.

var environment = process.env.NODE_ENV || 'development';

En un entorno de producción, lo definiríamos según los métodos habituales (SET/exportar).

Jacob avatar Jul 24 '2015 13:07 Jacob

Puede utilizar el paquete npm cross-env . Se encargará de recortar la variable de entorno y también se asegurará de que funcione en diferentes plataformas.

En la raíz del proyecto, ejecute:

npm install cross-env

Luego, en su paquete.json, en scripts, agregue:

"start": "cross-env NODE_ENV=dev node your-app-name.js"

Luego en tu terminal, en la raíz del proyecto, inicia tu aplicación ejecutando:

npm start

La variable de entorno estará disponible en tu aplicación como process.env.NODE_ENV, por lo que podrías hacer algo como:

if (process.env.NODE_ENV === 'dev') {
  // Your dev-only logic goes here
}
Liran H avatar Dec 29 '2018 22:12 Liran H