16
votes

Netlify rend 404 lors de l'actualisation de la page (en utilisant React et react-router)

J'ai déployé mon site avec Netlify et j'ai des problèmes de routage.

Voici mon site Web: https://redux-co.netlify.com/

Et mon dépôt GitHub: https://github.com/jenna-m/redux-co

Plus précisément, si un utilisateur accède à une page en dehors de la page d'accueil et actualise la page, le Netlify 404 par défaut est rendu. À partir de la page 404, si je reviens à la page d'accueil et actualise, la page d'accueil est rendue.

De plus, ma page 404 personnalisée ne fonctionne pas comme elle le fait lorsque je suis sur localhost:3000 , mais j'aimerais d'abord résoudre ce problème d'actualisation avant de traiter mon composant 404 personnalisé.

J'utilise React et react-router, et je comprends que puisque j'utilise react-router, mon site Web ne se déploiera pas immédiatement.


Voici mon fichier _redirects , qui se trouve dans le dossier /public avec mon fichier index.html :

…
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build && cp build/index.html build/404.html",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  }
…

Ceci est mon " “build†situé dans package.json :

/*    /index.html   200

J'ai lu sur d'autres personnes qui vivent cela et ce qu'elles ont fait pour surmonter le problème. C'est ce à quoi j'ai fait référence jusqu'à présent…

https://www.freecodecamp.org/news/how-to-deploy-a-react-application-to-netlify-363b8a98a985/

https://hugogiraudel.com/2017/05/13/using-create-react-app-on-netlify/

Cette personne utilisait Vue et non React, mais j'ai quand même tenté ces solutions:

https://github.com/vuejs/vuepress/issues/457#issuecomment-390206649

https://github.com/vuejs/vuepress/issues/457#issuecomment-463745656


1 commentaires

hm, étrange. Peut-être que vous avez défini quelque chose de mal sur les paramètres Netlify


4 Réponses :


7
votes

Supprimez _redirects de votre dossier public et déplacez netlify.toml à la racine de votre netlify.toml git, plus d'informations . Supprimez également du script de construction && cp build/index.html build/404.html - vous n'en avez plus besoin


2 commentaires

Fonctionne comme un charme! Après avoir implémenté votre solution, j'ai également fait fonctionner mes pages 404 personnalisées. Merci pour l'aide!


J'ai ajouté ceci dans netlify.toml et cela fonctionne! [[redirects]] from = "/*" to = "/index.html" status = 200



29
votes

C'était simple et cela a fonctionné pour moi . J'ai trouvé ce lien https://create-react-app.dev/docs/deployment#netlify

Ainsi , comme suggéré par ce lien, j'ai ajouté un _redirects fichier à l' intérieur du /public dossier comme /public/_redirects . J'ai ensuite collé /* /index.html 200 dans le fichier _redirects . J'ai fait tout cela dans mon VS Code, après quoi j'ai poussé vers github, puis bien sûr, mon netlify se redéploie automatiquement chaque fois que je pousse vers github. Mon problème a été résolu et le rafraîchissement n'apporte plus l'erreur 404.

Dans mon package.json, la section build ressemble à ceci;

"scripts": {
   "start": "react-scripts start",
   "build": "react-scripts build",
   "test": "react-scripts test",
   "eject": "react-scripts eject"
}

Remarque: certains articles disent que vous devez ajouter _redirects dans le dossier de build , mais le dossier de construction ne fait pas partie de ce qui est poussé vers github dans mon cas, c'est pourquoi l'ajout de _redirects au dossier public a mieux fonctionné pour moi, car le dossier public peut être poussé avec mon code.


0 commentaires

0
votes

À partir de votre index.js, enveloppez simplement votre composant avec HashRouter au lieu de tout ce qui est là plus tôt. N'oubliez pas d'importer HashRouter depuis react-router-dom.

C'est magique.


0 commentaires

0
votes

Ajoutez le fichier netlify.toml au répertoire racine de votre projet et collez-y le code suivant:

[[redirects]]
  from = "/*"
  to = "/"
  status = 200

pousser et redéployer votre application et c'est fait.


0 commentaires