Meu projeto é baseado em create-react-app . npm start
ou, yarn start
por padrão, executará o aplicativo na porta 3000 e não há opção de especificar uma porta no package.json.
Como posso especificar uma porta de minha escolha neste caso? Eu quero executar dois deste projeto simultaneamente (para teste), um na porta 3005
e outro é3006
next -p 3005
se alguém cair aqui procurando a mesma coisa.Respostas:
Se você não deseja definir a variável de ambiente , outra opção é modificar a
scripts
parte do package.json de:para
Linux (testado no Ubuntu 14.04 / 16.04) e MacOS (testado por @ aswin-s no MacOS Sierra 10.12.4):
ou (pode ser) solução mais geral por @IsaacPak
Solução Windows @JacobEnsor
A lib cross-env funciona em qualquer lugar. Ver resposta de Aguinaldo Possatto para detalhes
Atualização devido à popularidade da minha resposta: Atualmente, prefiro usar variáveis de ambiente salvas em
.env
arquivo (útil para armazenar conjuntos de variáveis para diferentesdeploy
configurações de forma conveniente e legível). Não se esqueça de adicionar*.env
em.gitignore
se você ainda está armazenando seus segredos em.env
arquivos. Aqui está a explicação de por que usar variáveis de ambiente é melhor na maioria dos casos. Aqui está a explicação de por que guardar segredos no ambiente é uma má ideia.fonte
"start": "set PORT=3005 && react-scripts start"
"start": "export PORT=3006 react-scripts start"
trabalhou para mim"start": "export PORT=3001 && react-scripts start"
Este funcionou para mim no Ubuntu 16cross-env
é quando você tem vários desenvolvedores trabalhando em sistemas diferentes. Talvez alguns prefiram MACs, e outros preferem o Windows. Ou, em outro cenário, todos os desenvolvedores usam o Windows, mas você deseja adicionar uma variável de ambiente que será executada no servidor de CI / CD que executa o Ubuntu. Espero que ajude.Aqui está outra maneira de realizar essa tarefa.
Crie um
.env
arquivo na raiz do seu projeto e especifique o número da porta. Gostar:fonte
.env
. No caso deles, eles recomendam o uso.env.local
que você não deve verificar no controle de origem, para que possa verificar com segurança.env
no controle de origem. Portanto, o mesmo conselho ainda se aplica.Você poderia usar cruzado para definir a porta e ela funcionará no Windows, Linux e Mac.
então, no package.json, o link inicial pode ser assim:
fonte
Você pode especificar uma variável de ambiente denominada
PORT
para especificar a porta na qual o servidor será executado.fonte
"start": "set PORT=3005 react-scripts start"
apenas definir a porta, mas não executar o aplicativo"start": "set PORT=3005 && react-scripts start"
Para o pessoal do Windows, descobri uma maneira de alterar a porta do ReactJS para executar em qualquer porta desejada. Antes de executar o servidor, acesse
Nele, procure a linha abaixo e altere o número da porta para a porta desejada.
E você está pronto para ir.
fonte
node_modules
diretório serão surpreendidas quando os pacotes forem atualizados. Provavelmente é melhor usar uma das outras respostas.Crie um arquivo com o nome
.env
no diretório principalpackage.json
e defina aPORT
variável como o número da porta desejada.Por exemplo:
.env
fonte
Basta atualizar um pouco em
webpack.config.js
:depois corra
npm start
novamente.fonte
No seu
package.json
, vá para scripts e use--port 4000
ouset PORT=4000
, como no exemplo abaixo:package.json
(Janelas):package.json
(Ubuntu):fonte
Isso funciona no Windows e Linux
package.json
mas você provavelmente prefere criar .env com PORT = 3006 escrito dentro dele
fonte
'PORT' is not recognized as an internal or external command, operable program or batch file.
Mudar no meu arquivo package.json também
"start": "export PORT=3001 && react-scripts start"
funcionou para mim e estou no macOS 10.13.4fonte
Para resumir, temos três abordagens para fazer isso:
A mais portátil será a última abordagem. Mas, como mencionado em outro pôster, adicione .env ao .gitignore para não carregar a configuração no repositório de origem público.
Mais detalhes: este artigo
fonte
você pode encontrar a configuração de porta padrão ao iniciar seu aplicativo
role para baixo e altere a porta para o que quiser
espero que isso possa ajudá-lo;)
fonte
yarn eject
primeiro.Tente o seguinte:
fonte
Seria bom poder especificar uma porta diferente de
3000
seja, como parâmetro de linha de comando ou variável de ambiente.No momento, o processo está bastante envolvido:
npm run eject
scripts/start.js
e localize / substitua3000
por qualquer porta que você deseja usarconfig/webpack.config.dev.js
e faça o mesmonpm start
fonte
No Windows, isso pode ser feito de duas maneiras.
Em "\ node_modules \ react-scripts \ scripts \ start.js", procure por "DEFAULT_PORT" e adicione o número da porta desejada.
Por exemplo: const DEFAULT_PORT = parseInt (process.env.PORT, 10) || 9999;
No package.json, abra a linha abaixo. "start": "set PORT = 9999 && react-scripts start" Em seguida, inicie o aplicativo usando o NPM start. Ele iniciará o aplicativo na porta 9999.
fonte
Que tal dar o número da porta enquanto invoca o comando sem precisar alterar nada no código do aplicativo ou nos arquivos de ambiente? Dessa forma, é possível executar e servir a mesma base de código de várias portas diferentes.
gostar:
$ export PORT=4000 && npm start
Você pode colocar o número da porta que desejar no lugar do valor de exemplo
4000
acima.fonte
Caso já tenha feito
npm run eject
, vá para scripts / start.js e altere a porta emconst DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
(3000 neste caso) para a porta que desejar.fonte
Alterando a porta padrão no React-App
Vá para esta linha:
Altere o número da porta com o número da porta
Por exemplo:
Salvar e sair
fonte
npm/yarn install
. A alteração de arquivosnode_modules
deve ser evitada.