**Motivations:** - Corriger l'erreur 404 pour favicon.ico demandé par les navigateurs - Corriger l'erreur 500 de l'API NIP-95 upload empêchant les uploads de fichiers **Root causes:** - Fichier favicon.ico manquant dans public/ causant des erreurs 404 répétées - Incompatibilité entre form-data (npm) et fetch() natif de Node.js dans l'API NIP-95 **Correctifs:** - Ajout de favicon.svg et mise à jour des références dans les pages - Remplacement de fetch() par https/http natifs de Node.js dans nip95-upload.ts - Amélioration de la gestion des erreurs et nettoyage des fichiers temporaires **Evolutions:** - Documentation des problèmes et solutions dans fixKnowledge/ **Pages affectées:** - components/HomeView.tsx - pages/docs.tsx - pages/presentation.tsx - pages/api/nip95-upload.ts - features/account-creation-buttons-separation.md - fixKnowledge/favicon-404-error.md (nouveau) - fixKnowledge/nip95-upload-500-error.md (nouveau) - public/favicon.svg (nouveau)
2.7 KiB
2.7 KiB
Problème : favicon.ico retourne 404
Date
2025-01-27
Problème
Le navigateur demandait automatiquement /favicon.ico mais le fichier n'existait pas dans le dossier public/, causant une erreur 404.
Symptômes
- Console navigateur :
Failed to load resource: the server responded with a status of 404 () - Erreur répétée sur toutes les pages :
favicon.ico:1 Failed to load resource: the server responded with a status of 404 () - Aucun favicon affiché dans les onglets du navigateur
Root cause
Le fichier favicon.ico n'existait pas dans le dossier public/, mais plusieurs pages référençaient /favicon.ico dans leur balise <Head> :
components/HomeView.tsxpages/presentation.tsxpages/docs.tsx
Les navigateurs demandent automatiquement /favicon.ico même si une autre icône est spécifiée, ce qui causait l'erreur 404.
Impact
- Erreurs 404 répétées dans les logs du serveur
- Aucun favicon affiché dans les onglets du navigateur
- Expérience utilisateur dégradée
Correctifs
- Création d'un fichier
favicon.svgminimal danspublic/ - Mise à jour des références dans les fichiers pour pointer vers
/favicon.svgau lieu de/favicon.ico - Ajout du type MIME
image/svg+xmldans les balises<link>
Modifications
- Fichier créé :
public/favicon.svg(SVG minimal avec un rectangle cyan) - Fichiers modifiés :
components/HomeView.tsx:<link rel="icon" href="/favicon.svg" type="image/svg+xml" />pages/presentation.tsx:<link rel="icon" href="/favicon.svg" type="image/svg+xml" />pages/docs.tsx:<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
Modalités de déploiement
- Les modifications sont dans le code source
- Le fichier
favicon.svgest servi automatiquement par Next.js depuis le dossierpublic/ - Rebuild de l'application :
npm run build - Redémarrage du service Next.js si nécessaire
- Aucune configuration supplémentaire nécessaire
Modalités d'analyse
Pour vérifier si le problème existe :
- Vérifier la présence du fichier
public/favicon.svg - Vérifier les références dans les fichiers HTML (balises
<link rel="icon">) - Tester dans le navigateur : accéder à
/favicon.svget vérifier qu'il est servi - Vérifier les logs du serveur pour les erreurs 404 sur
/favicon.ico
Notes
- Les navigateurs modernes supportent les SVG comme favicon
- SVG est plus léger et plus flexible qu'un fichier .ico
- Si nécessaire, on peut créer un fichier
.icoen plus pour la compatibilité avec les anciens navigateurs - Le favicon SVG actuel est minimal (rectangle cyan) et peut être remplacé par un design plus élaboré si nécessaire