Oi Filipe,
Para que o roteamento funcione direitinho é importante que a variável de ambiente PUBLIC_URL diga qual é o endereço que a aplicação será servida.
Quando você roda usando o server de desenvolvimento do webpack ele já coloca essa variável automaticamente com o endereço certo.
No caso em que você vá servir os arquivos num servidor seu, é necessário criar essa variável antes de rodar o npm run build
Para a criação de variáveis de ambiente num projeto criado com o create-react-app
, basta criar um arquivo com nome .env
e colocar suas variáveis lá. A sintaxe é essa:
NOME_DA_VARIAVEL=VALOR_DA_VARIAVEL
NOME_DA_VARIAVEL2=VALOR_DA_VARIAVEL2
No seu caso, o arquivo .env
ficaria assim, caso o endereço do servidor fosse http://localhost:4200/app
PUBLIC_URL=http://localhost:4200/app
Se quiser que essa variável de ambiente só seja usada em produção, ou seja, só quando rodar o npm run build
, você pode chamar o arquivo de .env.production
.
Pra saber de mais variáveis e quando é necessário alterar o valor delas, consulte essa tabela aqui.
Pra saber mais desses arquivos .env
, dê uma olhada aqui
Se tiver alguma dúvida e só falar :)
Abraço