2012-09-03 11 views
7

Estoy accediendo a la variable de entorno NODE_ENV para activar algunas funciones de depuración en un servidor node.js. Solía ​​funcionar como un amuleto, pero ahora estoy enfrentando algunas cosas muy raras. Esto es lo que estoy haciendo:No se puede acceder correctamente a la variable de entorno NODE_ENV, ¿se trata de un error con node.js?

// check if the env var is OK 
console.log(process.env.NODE_ENV); 

// WTF??? 
if (process.env.NODE_ENV == "development") { 
    console.log("ok"); 
} 
else { 
    console.log("nope"); 
} 

// sanity check 
var str = "development"; 
if (str == "development") { 
    console.log("ok"); 
} 
else { 
    console.log("nope"); 
} 

Y aquí es lo que me pasa:

development 
nope 
ok 

¿Cómo es posible? ¿Estoy enfrentando un error en node.js? Si no, ¿qué estoy haciendo mal?

EDITAR

Siguiendo el comentario de puntiaguda a continuación, aquí es lo que me pasa si cambio de registro inicial para console.log("[" + process.env.NODE_ENV + "]");:

]development 
nope 
ok 

Por lo tanto, un problema conocido tal vez?

+2

cambiarlo a 'console.log ("[" + process.env.NODE_ENV + "]");' para ver si hay espacios finales quizá – Pointy

+0

@Pointy hace esto, ver mi editar. Asi que. Ilumíname :) –

+2

Ah, bueno, me parece que la variable de entorno sí tiene algunos personajes divertidos, ¿quizás un retorno de carro al final? – Pointy

Respuesta

10

Parece que la variable de entorno tiene algunos caracteres divertidos, posiblemente debido a la forma en que se establece fuera de Node.js. Usted podría intentar esto:

if (process.env.NODE_ENV.replace(/\W/g, '') == 'development') { 
    console.log('ok'); 
} 
+1

¡Sí, tienes razón! Estaba configurando la variable con un script con terminaciones de línea de Windows, si lo configuro directamente en bash, ¡el problema desaparece! ¡Bueno, muchas gracias! –

Cuestiones relacionadas