Para uso em ambientes express.js. Alguma sugestão?
javascript
node.js
macos
environment-variables
Mark Gia Bao Nguyen
fonte
fonte
Respostas:
Antes de executar seu aplicativo, você pode fazer isso no console,
Ou, se você estiver no Windows, tente o seguinte:
ou você pode executar seu aplicativo assim:
Você também pode configurá-lo no seu arquivo js:
Mas não sugiro fazer isso no seu arquivo de tempo de execução, pois não é fácil abrir o VIM no servidor e alterá-lo para produção. Você pode criar um arquivo config.json em seu diretório e sempre que seu aplicativo é executado, ele lê e define a configuração.
fonte
process.env.NODE_ENV
forma confiável a partir do próprio aplicativo. É melhor definir sua variável de ambiente corretamente, como Daniel vinculado abaixo.NODE_ENV
explicitamente toda vez que você executa o aplicativo, como no segundo exemplo (NODE_ENV=production node app.js
). Dessa forma, você potencialmente se poupará de algum puxão de cabelo no futuro, caso esqueça deNODE_ENV
voltar ao localdevelopment
.cross-env NODE_ENV=production
funciona em windows e linux / mac.NODE_ENV=production forever app.js
deve funcionar.no package.json:
depois corra no terminal:
fonte
NODE_ENV=production
no package.json não faz muito sentido. A execuçãonpm start
no desenvolvimento executará na produção. Você pode escrever seu código como se fosse sempre produção, desde que você sempre o execute dessa maneira. A única razão pela qual vejo isso é forçar outros módulos (por exemplo, o Express) a serem executados no modo de produção. Por que usar variáveis de ambiente se elas nunca mudam?Ninguém mencionou
.env
aqui ainda? Crie um.env
arquivo na raiz do aplicativorequire('dotenv').config()
e leia os valores. Facilmente alterado, de fácil leitura e multiplataforma.https://www.npmjs.com/package/dotenv
fonte
"mode": "production"
no.env
arquivo funcionou.export NODE_ENV=production
é uma solução ruim, desaparece após o reinício.se você não quiser mais se preocupar com essa variável - adicione-a neste arquivo:
não use sintaxe de exportação, basta escrever (em nova linha, se já houver algum conteúdo):
funciona após o reinício. Você não precisará digitar novamente o comando export NODE_ENV = production em qualquer lugar e apenas usar o nó com o que quiser - para sempre, pm2 ...
Para heroku:
que é realmente o padrão.
fonte
NODE_ENV=production gulp bundle-production-app
para agrupar scripts prontos para produção, no servidor NODE_ENV está no ambiente do servidor e na máquina dev não está lá. Em algumas máquinas, é um pesadelo se não estiver definido e você espera que ele esteja definido sempre . Em alguns, você espera não tê-lo, para não adicioná-lo. De qualquer forma, ao fazer interfaces, deixo claro se está no modo de desenvolvimento, para que você nunca tenha uma pergunta se está ligado ou desligado. Se NODE_ENV é! == produção, está na sua cara que você está em outro modo, então não há pesadelo. Tudo claro, tudo de bom./etc/environment
e executá-loexport NODE_ENV=production
?Para não precisa se preocupar se você está executando seus scripts em Windows, Mac ou Linux instalar o cross-env pacote. Então você pode usar seus scripts facilmente, assim:
Acessórios maciços para os desenvolvedores deste pacote.
fonte
fonte
NODE_ENV=production
agora é o padrão no Heroku node.js implementado.Para o Windows PowerShell, use este comando
fonte
No OSX, eu recomendo adicionar
export NODE_ENV=development
ao seu~/.bash_profile
e / ou~/.bashrc
e / ou~/.profile
.Pessoalmente, adiciono essa entrada à minha
~/.bashrc
e, em seguida,~/.bash_profile
~/.profile
importo o conteúdo desse arquivo, para que seja consistente entre os ambientes.Depois de fazer essas adições, reinicie o terminal para pegar as configurações.
fonte
Se você estiver no Windows. Abra seu cmd na pasta direita e depois primeiro
pressione enter, então você pode iniciar seu nó com
começará com sua configuração de ambiente
fonte
Se você estiver usando o webpack em seu aplicativo, basta configurá-lo lá, usando
DefinePlugin
...Portanto, na sua
plugin
seção, defina o NODE_ENV paraproduction
:fonte
Para ter vários ambientes, você precisa de todas as respostas antes (parâmetro NODE_ENV e exportá-lo), mas eu uso uma abordagem muito simples, sem a necessidade de instalar nada. No seu package.json basta colocar um script para cada ambiente que você precisa, assim:
Em seguida, inicie o aplicativo em vez de usar o
npm start
usonpm run script-prod
.No código, você pode acessar o ambiente atual com
process.env.NODE_ENV
.Voila.
fonte
CMD do Windows ->
set NODE_ENV=production
Powershell do Windows ->
$env:NODE_ENV="production"
MAC ->
export NODE_ENV=production
fonte
Daniel tem uma resposta fantástica, que é a melhor abordagem para o processo correto de implantação (definir e esquecer).
Para quem usa express. Você pode usar o grunt-express-server, que também é fantástico. https://www.npmjs.org/package/grunt-express-server
fonte
Pode ser uma chance de você ter criado duas instâncias de sequenciar objetos
por exemplo: var con1 = new Sequelize (); var con2 = novo Sequelize ();
do que também ocorrerá o mesmo erro
fonte