Estou tentando configurar um ambiente para um aplicativo Node.js. mas estou recebendo esse erro sempre.
"NODE_ENV" não é reconhecido como um comando interno ou externo, comando operável ou arquivo em lote.
O que isso significa e como posso resolver esse problema?
Estou usando o Windows e também tentei, set NODE_ENV=development
mas não tive sorte.
Eu escrevi um módulo para isso: win-node-env .
Ele cria um
NODE_ENV.cmd
que define aNODE_ENV
variável de ambiente e gera um processo filho com o restante do comando e seus argumentos.Basta instalá-lo (globalmente) e executar seus comandos de script npm, ele deve fazê-los funcionar automaticamente.
fonte
para Windows também use
&
entre comandos. Gostar,fonte
NODE_ENV
será 'desenvolvimento' (o espaço em branco entre 't' e 'e' será contido porNODE_ENV
).trim()
o valor mais tarde para fazer oprocess.env.NODE_ENV == 'production'
trabalho. De qualquer forma, para evitar isso em um oneliner?"test-unit": "SET NODE_ENV=test & mocha --require co-mocha 'test.js'"
errado de"test-unit": "SET NODE_ENV=test & mocha --require co-mocha test.js"
verdade . Você precisa remover o' '
arquivo js ao redor.npm install "cross-env"
módulo.cross-env NODE_ENV=development node foo.js
. Então você pode executar o mesmonpm run build
.fonte
cross-env
as dependênciaspackage.json
npm install --save-dev cross-env
; isso também ajuda com o erro'env' is not recognized as an internal or external command
quando o script npm dizenv VARNAME=varvalue && ...
(basta remover env e inserir env-cross). Não é necessário que os desenvolvedores instalem algo globalmente ou tenham scripts npm diferentes para plataformas diferentes!Use win-node-env . Para usá-lo, basta executar o comando abaixo em seu
cmd
oupower shell
ougit bash
:Depois disso tudo é como o Linux.
fonte
fará com que NODE_ENV contenha um espaço no final:
Conforme mencionado em um comentário aqui , use isso:
fonte
Alterar seus scripts para acomodar o Windows é uma dor real. Tentar descobrir as traduções apropriadas do Windows e manter dois conjuntos de scripts não é uma maneira de viver sua vida.
É muito mais fácil configurar o npm para usar o bash no Windows e seus scripts serão executados como estão.
Simplesmente corra
npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
. Verifique se o caminho para o executável do bash está correto para sua máquina. Você provavelmente precisará iniciar uma nova instância do terminal para que a alteração entre em vigor.A captura de tela abaixo ilustra o benefício.
fonte
Para quem usa o Git Bash e tem problemas com
npm run <script>
,Basta definir npm para usar o Git Bash para executar scripts
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
(mude o caminho de acordo com sua instalação)E então o npm executará scripts com o Git Bash, para que esses usos
NODE_ENV=
funcionem corretamente.fonte
Trabalhou para mim
fonte
Para janelas, abra o git bash e tente
NODE_ENV=production node app.js
fonte
npm <scripts_entry>
, recebo um erro com fraseado diferente, mas com significado equivalente: ele trata env var name como um executável.npm run <script>
usa o cmd do Windows como padrão para executar comandos. Você pode configurá-lo para usar o Git Bash.npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
E entãonpm run
usará o Git Bash para executar scripts.A maioria das respostas lá em cima não me ajudou ..
O que me ajudou foi
NODE_ENV=production&& nodemon app/app.js
Tome nota do espaço. Boa sorte.
fonte
Se mais alguém veio aqui como eu tentando encontrar uma solução para o erro:
A razão pela qual obtive isso é que estava migrando uma solução angular de uma máquina de desenvolvimento mac para um desktop com Windows 10. Foi assim que eu resolvi.
corre
npm install --save-dev cross-env
vá para o meu arquivo package.json e altere todas as referências de script de
env <whatever>
paracross-env <whatever>
Em seguida, meus comandos como:
npm run start:some_random_environment_var
agora funcionam bem no Windows 10.fonte
process.env.NODE_ENV está adicionando um espaço em branco, faça isso
fonte
Para janelas, você pode fazê-lo como
fonte