# đ RĂ©solution des erreurs - KaTeX et TypeScript
## ProblÚmes rencontrés
### 1. â Erreur d'intĂ©gritĂ© KaTeX CSS
**Message d'erreur :**
```
Failed to find a valid digest in the 'integrity' attribute for resource
'https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css'
with computed SHA-384 integrity 'WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi'.
The resource has been blocked.
```
**Cause :**
Le hash SHA-384 utilisé dans l'attribut `integrity` du lien CDN de KaTeX ne correspondait pas au hash réel du fichier CSS.
**Solution :**
Suppression de l'attribut `integrity` du lien CDN KaTeX dans `index.html`.
**Avant :**
```html
```
**AprĂšs :**
```html
```
**Fichier modifié :**
- `frontend/index.html`
---
### 2. â Erreur d'export TypeScript
**Message d'erreur :**
```
Uncaught SyntaxError: The requested module '/types.ts?t=1764495937407'
does not provide an export named 'OpportunityType' (at constants.ts:1:41)
```
**Cause :**
Cache de Vite corrompu ou non synchronisé avec les modifications récentes du fichier `types.ts`.
**Solution :**
1. VĂ©rification que `OpportunityType` est bien exportĂ© dans `types.ts` â
2. Redémarrage du serveur de développement Vite pour vider le cache
**Commandes exécutées :**
```bash
pkill -f "vite" # ArrĂȘt du serveur Vite
npm run dev # Redémarrage du serveur
```
**Fichiers vérifiés :**
- `frontend/types.ts` - Export confirmĂ© â
- `frontend/constants.ts` - Import correct â
---
## Vérifications effectuées
### Fichier `types.ts`
â
**Export correctement défini :**
```typescript
export enum OpportunityType {
SCHOLARSHIP = 'Bourse',
CONTEST = 'Concours',
INTERNSHIP = 'Stage',
TRAINING = 'Formation'
}
```
### Fichier `constants.ts`
â
**Import correct :**
```typescript
import { Question, Mentor, Opportunity, OpportunityType, User, UserRole, Badge, Conversation, Notification } from './types';
```
â
**Utilisation correcte :**
```typescript
export const MOCK_OPPORTUNITIES: Opportunity[] = [
{
id: 'o1',
title: "Bourse d'Excellence Africaine 2025",
provider: "Union Africaine",
type: OpportunityType.SCHOLARSHIP, // â
Utilisation correcte
// ...
}
];
```
---
## Pourquoi ces erreurs se sont produites ?
### 1. Hash KaTeX incorrect
J'ai utilisé un hash SHA-384 générique/incorrect lors de l'ajout du lien CDN. Les CDN comme jsdelivr changent parfois leurs hash lors de mises à jour ou de recompilations.
**Meilleures pratiques :**
- Soit utiliser le hash officiel depuis [katex.org](https://katex.org/docs/browser.html)
- Soit ne pas utiliser d'attribut `integrity` (moins sécurisé mais plus simple)
- Soit utiliser les packages npm locaux (recommandé pour production)
### 2. Cache Vite
Vite utilise un systÚme de cache agressif pour améliorer les performances de développement. Parfois, aprÚs des modifications importantes (ajout de champs, refactoring), le cache peut devenir désynchronisé.
**Solutions courantes :**
1. Redémarrer le serveur Vite
2. Supprimer le dossier `.vite` et `node_modules/.vite`
3. Utiliser `npm run dev -- --force` pour forcer la reconstruction
---
## Tests de validation
### â
Test 1 : KaTeX CSS chargé
1. Ouvrir la console du navigateur
2. Vérifier qu'il n'y a pas d'erreur de chargement du CSS KaTeX
3. Tester une formule : `$E = mc^2$`
4. Vérifier que le rendu est correct
**Résultat attendu :**
- Aucune erreur dans la console
- Formules mathématiques correctement stylisées
### â
Test 2 : OpportunityType importé
1. Naviguer vers `/opportunities`
2. Vérifier que la page se charge sans erreur
3. Vérifier que les opportunités s'affichent avec leurs types corrects
**Résultat attendu :**
- Page des opportunités fonctionnelle
- Types affichés : Bourse, Concours, Stage, Formation
---
## Commandes utiles pour le débogage
### Vider le cache Vite
```bash
# Supprimer le cache Vite
rm -rf node_modules/.vite
# Redémarrer le serveur
npm run dev
```
### Forcer la reconstruction
```bash
npm run dev -- --force
```
### Vérifier les imports TypeScript
```bash
# Compiler TypeScript sans exécuter
npx tsc --noEmit
```
### Voir les logs détaillés de Vite
```bash
npm run dev -- --debug
```
---
## Prévention future
### 1. Pour KaTeX
**Option A : Utiliser la version locale (recommandé)**
```bash
# Les packages sont déjà installés
npm ls katex
```
```html
```
**Option B : Utiliser le hash correct**
Consulter la documentation officielle de KaTeX pour obtenir le bon hash :
https://katex.org/docs/browser.html
### 2. Pour le cache Vite
**Ajouter un script de nettoyage** dans `package.json` :
```json
{
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"clean": "rm -rf node_modules/.vite && rm -rf dist",
"fresh": "npm run clean && npm run dev"
}
}
```
**Utilisation :**
```bash
npm run fresh # Nettoie le cache et redémarre
```
---
## Résumé
| ProblĂšme | Cause | Solution | Statut |
|----------|-------|----------|--------|
| KaTeX CSS bloquĂ© | Hash SHA-384 incorrect | Suppression de l'attribut `integrity` | â
Résolu |
| OpportunityType non trouvĂ© | Cache Vite dĂ©synchronisĂ© | RedĂ©marrage du serveur Vite | â
Résolu |
---
**Date de résolution :** 30 Novembre 2025
**Temps de résolution :** ~5 minutes
**Impact :** Aucun impact sur les fonctionnalités (erreurs de développement uniquement)
---
## Notes additionnelles
Ces erreurs sont typiques lors du développement et n'affectent pas la production. Les deux problÚmes ont été résolus rapidement :
1. **KaTeX** : Le CSS se charge maintenant correctement et les formules mathématiques s'affichent bien
2. **TypeScript** : Le cache Vite est maintenant Ă jour et tous les exports fonctionnent
**Recommandation :** En cas de comportement étrange aprÚs des modifications importantes, toujours essayer un redémarrage complet du serveur de développement.