Je déploie une application React mais j'obtiens une étrange erreur lorsque je visite la page via https.
Lorsque je visite la page via https, je reçois l'erreur suivante:
SecurityError: Echec de la construction de 'WebSocket': Une connexion WebSocket non sécurisée ne peut pas être initiée à partir d'une page chargée via HTTPS.
Mais quand je vais sur la page http, cela fonctionne parfaitement.
Le problème est que je n'utilise pas de websockets pour autant que je sache. J'ai cherché dans le code pour voir s'il y avait une demande à http qui devrait être à https ou à ws: au lieu de wss: mais je ne vois rien.
Quelqu'un a-t-il déjà rencontré cela?
J'inclus une copie du fichier package.json. Faites-moi savoir si vous avez besoin de moi pour télécharger d'autres parties de code pour aider au débogage.
Merci d'avance.
{
"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
manuellement car ceux-ci ne seront pasBeaucoup de réponses ici résolvent réellement le problème, mais la manière la plus simple que j'ai trouvée depuis que j'ai posé cette question est d'ajouter le service de paquetage npm à vos dépendances.
yarn add serve
ounpm i serve
puis remplacez votre script de démarrage par ce qui suit:
Ceci est en fait tout droit sorti des créer une réaction-app docs
la source
"dev": "react scripts start"
Le vous exécuteznpm run dev
pour exécuter localement.Voici une solution plus simple. Downgrader votre
react-scripts
à3.2.0
votrepackage.json
( le mien était à3.3.0
).Vous devrez peut-être supprimer vos
package-lock.json
etnode_modules
(rm -rf package-lock.json node_modules
), puis effectuez unenpm i
. Validez votre nouveaupackage.json
etpackage-lock.json
le repo.la source
Cela fait un moment que je ne plaisante pas avec réagir, mais
react-scripts
plaisante pas avec react est construit au-dessus de webpack si je ne me trompe pas, il utilise donc très probablement webpack-dev-server pour accélérer le développement. Il utilise des websockets afin de communiquer avec le client pour déclencher un rechargement à chaud lorsqu'il découvre les modifications sur le disque.Vous êtes probablement en train de démarrer l'application en mode développement, donc si vous la déployez dans un environnement de production, vous devez exécuter
npm run build
ce qui créera un ensemble de fichiers javascript que vous pourrez servir avec votre serveur Web préféré.la source
npm run build
et télécharger uniquement le contenu dubuild
répertoire.NODE_ENV=production npm run build
, puis téléchargez uniquement lebuild
répertoire sur heroku (c'est-à-dire que la construction sera votre racine Web sur le serveur Web, pas besoin de nœud sur le serveur à moins d'utiliser ssr). La version de production ne devrait même pas inclure le serveur de développement webpack, je dirais que c'est un bug dans ce cas.Ajoutez ce code dans server.js
Dans pakage.json
Et ajoutez le proxy d'itinéraire dans /folder-name-react-app/pakage.json
la source
toute personne qui a des problèmes avec ce problème lors du déploiement de Heroku rétrograde votre
reac-scripts
module vers3.2.0
.package-lock.json
fichiernode_modules
dossierreact-scripts
version par3.2.0
npm install
tous les modules à nouveaula source
Vous devez consulter cet article du site Web Create-React-App. Il explique comment déployer correctement l'application React créée avec `` Create-React-App '' qui pointe vers un buildpack spécifique pour l'application React, mars / create-react-app-buildpack, sur Github dont vous aviez besoin lors de la création de l'application Heroku.
https://create-react-app.dev/docs/deployment/#heroku
https://github.com/mars/create-react-app-buildpack
J'ai eu le même problème avec le problème de connexion Web non sécurisé que tout le monde a ici, j'ai donc testé la solution de l'article Create-React-App. Cela a résolu le problème. Pas besoin de modifier node_module ou quoi que ce soit.
Tout ce que vous devez faire est de nous utiliser cette commande lors de la création d'une application heroku à partir de la CLI à la racine de l'application React:
puis:
lorsque vous accédez à votre site Web sur Heroku. il s'exécutera comme prévu sans aucune erreur "websocket non sécurisé".
(Je ne sais pas comment y ajouter le buildpack mars / create-react-app APRÈS que vous ayez déjà créé / déployé sur Heroku. Je ne suis pas encore arrivé à cette partie.)
La solution ci-dessus semble résoudre le problème que l'équipe de create-react-app a pour le déploiement sur Heroku.
la source