Este é o meu aplicativo, atualmente estou em execução na produção.
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());
});
No entanto, eu vim a conhecer NODE_ENV
e quero usá-lo. Como posso fazer isso?
javascript
node.js
express
TIMEX
fonte
fonte
app.configure('development', ...)
ou "produção" para definir determinadas configurações apenas para ambientes de desenvolvimento ou produção. Veja expressjs.com/api.html#app.configureRespostas:
NODE_ENV
é uma variável de ambiente popularizada pela estrutura expressa do servidor da web. Quando um aplicativo de nó é executado, ele pode verificar o valor da variável de ambiente e fazer coisas diferentes com base no valor.NODE_ENV
especificamente é usado (por convenção) para indicar se um ambiente específico é um ambiente de produção ou desenvolvimento . Um caso de uso comum está executando código de depuração ou log adicional se estiver sendo executado em um ambiente de desenvolvimento.Acessando NODE_ENV
Você pode usar o código a seguir para acessar a variável de ambiente você mesmo, para poder executar suas próprias verificações e lógica:
var environment = process.env.NODE_ENV
Ou, alternativamente, usando express '
app.get('env')
( nota: esse padrão é"development"
)Esteja ciente de que, se você não tiver definido explicitamente
NODE_ENV
para o seu ambiente, seráundefined
.Definindo NODE_ENV
Como realmente definir a variável de ambiente varia de sistema operacional para sistema operacional e também depende da configuração do usuário.
Se você deseja definir a variável de ambiente como única, é possível fazer isso na linha de comando:
export NODE_ENV=production
$env:NODE_ENV = 'production'
A longo prazo, você deve persistir com isso para não desarmar se você reiniciar - em vez de listar todos os métodos possíveis para fazer isso, vou deixar você pesquisar como fazer isso sozinho!
A Convenção determinou que existem apenas dois valores que você deve usar para
NODE_ENV
,production
ou paradevelopment
, todos em minúsculas. Não há nada que o impeça de adicionar mais valores, mas provavelmente não é uma boa ideia, pois vejo muito desse tipo de código em muitos dos node_modules que eu uso:Note-se que é uma péssima idéia para tentar conjunto
NODE_ENV
de dentro de si uma aplicação nó - se você fizer isso vai só se aplicam ao processo a partir do qual ele foi criado , então as coisas provavelmente não vai funcionar como você espera que eles. Não faça isso - você vai se arrepender.fonte
app.configure()
foi removido. O guia de migração do Express 4 recomenda "usarprocess.env.NODE_ENV
ouapp.get('env')
detectar o ambiente e configurar o aplicativo de acordo".app.get('env')
exatamente por esse motivo. Ele cobre que essa variável importante não está definida - fazendo com que as coisas pareçam inconsistentes quando você a acessa de fora do express. Além disso, eu acho que é menos prejudicial para ter código de depuração acidentalmente não correr em um ambiente de desenvolvimento do que é tê-lo acidentalmente em execução em um ambiente de produção.development
que - entre outras coisas - significa que os modelos serão reprocessados para cada solicitação. A conseqüência é um ganho ou dreno de desempenho de ~ 75% entre produção e desenvolvimento ao usar o Jade. Eu também criei uma postagem no blog em que apmblog.dynatrace.com/2015/07/22/…NODE_ENV é uma variável ambiental que representa o ambiente do nó no servidor expresso.
É como definimos e detectamos em que ambiente estamos.
É muito comum usar
production
edevelopment
.Conjunto:
Obter:
Você pode obtê-lo usando
app.get('env')
fonte
Suponho que a pergunta original incluísse como o Express usa essa variável de ambiente.
Express usa NODE_ENV para alterar seu próprio comportamento padrão. Por exemplo, no modo de desenvolvimento, o manipulador de erros padrão retornará um rastreamento de pilha ao navegador. No modo de produção, a resposta é simples
Internal Server Error
, para evitar vazar detalhes da implementação para o mundo.fonte
Normalmente, você usaria a
NODE_ENV
variável para executar ações especiais ao desenvolver, testar e depurar seu código. Por exemplo, para produzir resultados detalhados de log e depuração que você não deseja na produção. O próprio Express se comporta de maneira diferente, dependendo deNODE_ENV
estar definido comoproduction
ou não. Você pode ver isso se colocar essas linhas em um aplicativo Express e fazer uma solicitação HTTP GET para/error
:Observe que o último
app.use()
deve ser o último, depois de todos os outros manipuladores de métodos!Se você definir
NODE_ENV
aproduction
antes de iniciar seu servidor e, em seguida, enviar umGET /error
pedido para ele, você não deve ver o textoForcing an error!
no console, ea resposta não deve conter um rastreamento de pilha no corpo HTML (que origens da Express). Se, em vez disso, você definirNODE_ENV
outra coisa antes de iniciar o servidor, o contrário deverá acontecer.No Linux, defina a variável de ambiente NODE_ENV assim:
fonte