story-research-zapwall/fixKnowledge/nostrimg-500-error-diagnosis.md
Nicolas Cantu a52a261459 Document nostrimg.com 500 error diagnosis
**Motivations:**
- Document the code verification for nostrimg.com 500 errors
- Explain what was checked and what might be the issue
- Provide next steps for diagnosis

**Root causes:**
- Unknown: Could be code issue or server-side issue
- Need detailed logs to determine

**Correctifs:**
- Documented all code verifications
- Listed potential issues to check
- Provided next steps for diagnosis

**Evolutions:**
- None

**Pages affectées:**
- fixKnowledge/nostrimg-500-error-diagnosis.md (new)
2026-01-05 22:56:36 +01:00

118 lines
4.1 KiB
Markdown

# Diagnostic : Erreurs 500 avec nostrimg.com
## Date
2025-01-27
## Problème
L'endpoint `https://nostrimg.com/api/upload` retourne systématiquement des erreurs 500 lors des tentatives d'upload.
## Vérifications effectuées du code
### 1. Format de la requête ✅
- **FormData** : Utilisation correcte du package `form-data` npm
- **Champ de fichier** : Nom de champ `'file'` (standard NIP-95)
- **Stream** : Utilisation de `fs.createReadStream()` pour lire le fichier
- **Filename** : Transmission du nom de fichier original ou généré
- **Content-Type** : Transmission du type MIME du fichier
### 2. Headers HTTP ✅
- **Content-Type** : Généré automatiquement par `form-data` avec le boundary correct
- Format : `multipart/form-data; boundary=...`
- **Accept** : `application/json` (ajouté)
- **User-Agent** : `zapwall.fr/1.0` (ajouté)
- **Authorization** : Ajouté uniquement si token NIP-98 fourni (non requis pour nostrimg.com)
### 3. Configuration de la requête ✅
- **Méthode** : `POST` (correct)
- **URL** : `https://nostrimg.com/api/upload` (correcte)
- **Timeout** : 30 secondes (raisonnable)
- **Gestion des redirections** : Support des 301, 302, 307, 308
### 4. Gestion des erreurs ✅
- Détection des réponses HTML
- Classification des erreurs (404, 403, 500)
- Messages d'erreur clairs
- Logging amélioré
## Points à vérifier (non confirmés)
### 1. Nom du champ de fichier
- **Actuel** : `'file'`
- **Possible problème** : Certains endpoints NIP-95 utilisent `'image'`, `'upload'`, ou d'autres noms
- **Action** : Le code utilise `'file'` qui est le standard NIP-95, mais nostrimg.com pourrait attendre un autre nom
### 2. Format de la réponse attendue
- **Actuel** : Le code attend du JSON
- **Possible problème** : nostrimg.com pourrait retourner un format différent ou nécessiter des paramètres spécifiques
### 3. Authentification
- **Actuel** : Pas d'authentification pour nostrimg.com
- **Possible problème** : nostrimg.com pourrait nécessiter une authentification (NIP-98 ou autre)
### 4. Taille de fichier
- **Actuel** : Limite de 50MB côté proxy
- **Possible problème** : nostrimg.com pourrait avoir une limite différente
## Logging ajouté
Pour diagnostiquer le problème, un logging détaillé a été ajouté spécifiquement pour nostrimg.com :
### Logs de requête
- URL complète
- Méthode HTTP
- Nom du champ de fichier
- Nom du fichier
- Type MIME
- Taille du fichier
- Tous les headers (Content-Type, Accept, User-Agent, Authorization)
### Logs de réponse
- Code de statut HTTP
- Message de statut
- Headers de réponse (Content-Type, Content-Length)
- Aperçu du corps de la réponse (500 premiers caractères)
- Longueur du corps
- Détection HTML
## Prochaines étapes
1. **Activer nostrimg.com temporairement** et vérifier les logs serveur pour voir :
- Les détails exacts de la requête envoyée
- La réponse exacte du serveur nostrimg.com
- Le code de statut et les headers de réponse
2. **Tester avec curl** pour comparer :
```bash
curl -X POST https://nostrimg.com/api/upload \
-H "Accept: application/json" \
-H "User-Agent: zapwall.fr/1.0" \
-F "file=@test.jpg"
```
3. **Vérifier la documentation** de nostrimg.com si disponible :
- Nom de champ attendu
- Headers requis
- Format de réponse
- Limites de taille
4. **Tester avec un nom de champ différent** si les logs indiquent un problème :
- `'image'` au lieu de `'file'`
- `'upload'` au lieu de `'file'`
## Conclusion
Le code semble correct selon les standards NIP-95 :
- ✅ Format multipart/form-data correct
- ✅ Headers HTTP appropriés
- ✅ Gestion des erreurs robuste
- ✅ Logging détaillé pour diagnostic
**Hypothèse principale** : Le problème semble être côté serveur nostrimg.com plutôt que dans notre code. Les logs détaillés permettront de confirmer ou d'infirmer cette hypothèse.
## Modifications
- **Fichier modifié** : `pages/api/nip95-upload.ts`
- **Logging ajouté** : Logs détaillés pour les requêtes et réponses vers nostrimg.com
- **Commentaire ajouté** : Note sur le nom de champ 'file' et alternatives possibles