Estou implantando um aplicativo React, mas estou recebendo um erro estranho quando visito a página em https.
Quando visito a página por https, recebo o seguinte erro:
SecurityError: falha ao construir 'WebSocket': Uma conexão insegura do WebSocket não pode ser iniciada a partir de uma página carregada por HTTPS.
Mas quando eu vou para a página sobre http, ele funciona perfeitamente.
O problema é que não estou usando websockets até onde sei. Pesquisei o código para ver se há uma solicitação para http que deve ser https ou ws: em vez de wss: mas não vejo nada.
Alguém já se deparou com isso antes?
Estou incluindo uma cópia do arquivo package.json. Informe-me se você precisar fazer upload de outras partes do código para ajudar na depuração.
Desde já, obrigado.
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"baffle": "^0.3.6",
"cross-env": "^6.0.3",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-player": "^1.14.2",
"react-router-dom": "^5.1.2",
"react-scripts": "3.3.0",
"react-typist": "^2.0.5",
"webpack-hot-dev-clients": "^2.0.2"
},
"scripts": {
"start": "cross-env react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
node_modules
manual, pois eles não serão comprometidos com oMuitas respostas aqui realmente resolvem o problema, mas a maneira mais simples que encontrei desde que fiz essa pergunta é adicionar o pacote npm serve às suas dependências.
yarn add serve
ounpm i serve
e substitua seu script de inicialização pelo seguinte:
Este é realmente em linha reta fora dos criar-reagem-app docs
fonte
"dev": "react scripts start"
Você executarianpm run dev
para executar localmente.Aqui está uma solução mais simples. Faça o downgrade
react-scripts
para o seu3.2.0
nopackage.json
(o meu estava em3.3.0
).Pode ser necessário excluir seu
package-lock.json
enode_modules
(rm -rf package-lock.json node_modules
) e, em seguida, anpm i
. Confirme seu novopackage.json
epackage-lock.json
o repo.fonte
Já faz um tempo desde que eu estava brincando com o
react-scripts
react , mas é construído sobre o webpack, se não me engano, por isso provavelmente usa o webpack-dev-server para acelerar o desenvolvimento. Ele usa websockets para se comunicar com o cliente para acionar uma recarga a quente quando descobre alterações no disco.Provavelmente, você está apenas iniciando o aplicativo no modo de desenvolvimento; portanto, se estiver implantando-o em um ambiente de produção, execute-
npm run build
o para criar um conjunto de arquivos javascript que você pode servir com seu servidor da web favorito.fonte
npm run build
e fazer upload apenas do conteúdo nobuild
diretórioNODE_ENV=production npm run build
e faça o upload apenas dobuild
diretório para o heroku (ou seja, a build será sua raiz da web no servidor da web, sem a necessidade de um nó no servidor, a menos que esteja usando ssr). A compilação de produção não deve incluir nem o servidor de desenvolvimento webpack, eu diria que é um bug nesse caso.Adicione esse código ao server.js
Em para pakage.json
E adicione o proxy de rota em /folder-name-react-app/pakage.json
fonte
qualquer pessoa que esteja enfrentando problemas com a implantação do heroku fará o downgrade do
reac-scripts
módulo para3.2.0
.package-lock.json
arquivonode_modules
pastareact-scripts
versão para3.2.0
npm install
todos os módulos novamentefonte
Você precisa consultar este artigo no site Create-React-App. Ele explica como implantar o aplicativo React criado com 'Create-React-App' corretamente, que aponta para o buildpack específico para o aplicativo React, mars / create-react-app-buildpack, no Github que você precisava ao criar o aplicativo Heroku.
https://create-react-app.dev/docs/deployment/#heroku
https://github.com/mars/create-react-app-buildpack
Eu tive o mesmo problema com o problema inseguro de websocket que todos estão tendo aqui, então testei a solução no artigo Create-React-App. Resolveu o problema. Não há necessidade de modificar o node_module ou qualquer coisa.
Tudo o que você precisa fazer é usar este comando ao criar o aplicativo heroku a partir da CLI na raiz do aplicativo React:
então:
quando você acessa seu site na Heroku. ele será executado conforme o esperado, sem nenhum erro "inseguro da websocket".
(Não sei como adicionar o builds mars / create-react-app depois que você já criou / implantou no Heroku. Ainda não cheguei a essa parte.)
A solução acima parece estar abordando o problema que a equipe do create-react-app tem para implantar no Heroku.
fonte