Esta es mi aplicación, actualmente estoy en producción.
var app = express();
app.set('views',settings.c.WEB_PATH + '/public/templates');
app.set('view engine','ejs');
app.configure(function(){
app.use(express.favicon());
app.use(express.static(settings.c.WEB_PATH + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(express.session({
cookie:{ domain:"."+settings.c.SITE_DOMAIN, maxAge:1440009999},
secret:'hamster',
store: r_store,
}));
app.use(useragent.express());
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
});
Sin embargo, llegué a conocerlo NODE_ENV
y quiero usarlo. ¿Cómo puedo hacer esto?
javascript
node.js
express
TIMEX
fuente
fuente
app.configure('development', ...)
"producción" para establecer ciertas configuraciones solo para entornos de desarrollo o producción. Ver expressjs.com/api.html#app.configureRespuestas:
NODE_ENV
es una variable de entorno popularizada por el framework express web server. Cuando se ejecuta una aplicación de nodo, puede verificar el valor de la variable de entorno y hacer diferentes cosas según el valor.NODE_ENV
específicamente se usa (por convención) para indicar si un entorno particular es un entorno de producción o de desarrollo . Un caso de uso común es ejecutar código de depuración o registro adicional si se ejecuta en un entorno de desarrollo.Accediendo a NODE_ENV
Puede usar el siguiente código para acceder a la variable de entorno usted mismo para que pueda realizar sus propias verificaciones y lógica:
var environment = process.env.NODE_ENV
O, alternativamente, usando express '
app.get('env')
( nota: esto está predeterminado a"development"
)Tenga en cuenta que si no lo ha configurado explícitamente
NODE_ENV
para su entorno, lo seráundefined
.Configurando NODE_ENV
Cómo configurar realmente la variable de entorno varía de un sistema operativo a otro, y también depende de la configuración del usuario.
Si desea establecer la variable de entorno como única, puede hacerlo desde la línea de comandos:
export NODE_ENV=production
$env:NODE_ENV = 'production'
A largo plazo, debe persistir esto para que no se desarme si reinicia, en lugar de enumerar todos los métodos posibles para hacerlo, ¡le dejaré buscar cómo hacerlo usted mismo!
La convención ha dictado que solo hay dos valores que debe usar para
NODE_ENV
,production
o biendevelopment
, todos en minúscula. No hay nada que le impida agregar más valores, pero probablemente no sea una buena idea, ya que veo mucho de este tipo de código en muchos de los node_modules que uso:Tenga en cuenta que se trata de una muy mala idea para tratar de conjunto
NODE_ENV
desde dentro de una aplicación propio nodo - si lo hace será sólo se aplican al proceso de la cual se establece , por lo que probablemente las cosas no funcionarán como que esperar que. No lo hagas, te arrepentirás.fuente
app.configure()
se ha eliminado. La guía de migración Express 4 recomienda "usarprocess.env.NODE_ENV
oapp.get('env')
detectar el entorno y configurar la aplicación en consecuencia".app.get('env')
precisamente por esa razón. Oculta que esta variable importante no está configurada, lo que hace que las cosas parezcan inconsistentes cuando se accede desde fuera de express. Además creo que es menos dañino para tener el código de depuración accidentalmente no se está ejecutando en un entorno de desarrollo de lo que es tener que accidentalmente se ejecuta en un entorno de producción.development
que, entre otras cosas, significa que las plantillas se volverán a procesar para cada solicitud. La consecuencia es una ganancia o pérdida de rendimiento de ~ 75% entre la producción y el desarrollo al usar Jade. También he creado una publicación de blog sobre ese apmblog.dynatrace.com/2015/07/22/…NODE_ENV es una variable de entorno que significa entorno de nodo en el servidor express.
Es cómo configuramos y detectamos en qué entorno estamos.
Es muy común usar
production
ydevelopment
.Conjunto:
Obtener:
Puedes conseguirlo usando
app.get('env')
fuente
Supongo que la pregunta original incluía cómo Express usa esta variable de entorno.
Express usa NODE_ENV para alterar su propio comportamiento predeterminado. Por ejemplo, en el modo de desarrollo, el controlador de error predeterminado enviará un seguimiento de pila al navegador. En el modo de producción, la respuesta es simple
Internal Server Error
, para evitar filtrar detalles de implementación al mundo.fuente
Por lo general, usaría la
NODE_ENV
variable para tomar acciones especiales cuando desarrolle, pruebe y depure su código. Por ejemplo, para producir registros detallados y resultados de depuración que no desea en producción. Express se comporta de manera diferente dependiendo de siNODE_ENV
está configurado comoproduction
o no. Puede ver esto si coloca estas líneas en una aplicación Express y luego realiza una solicitud HTTP GET para/error
:Tenga en cuenta que este último
app.use()
debe ser el último, después de todos los demás manejadores de métodos.Si se establece
NODE_ENV
queproduction
antes de empezar su servidor y, a continuación, envía unaGET /error
solicitud a la misma, no se debe ver el textoForcing an error!
en la consola, y la respuesta no debe contener un seguimiento de la pila en el cuerpo HTML (que a partir de orígenes Express). Si, en cambio, estableceNODE_ENV
algo más antes de iniciar su servidor, debería ocurrir lo contrario.En Linux, configure la variable de entorno NODE_ENV de esta manera:
fuente