Le problème
J'ai travaillé sur un projet Node.js avec TypeScript et Express.js. À un moment donné, j'ai dû attacher un objet utilisateur à l'objet Express Request, mais j'ai rencontré cette erreur TypeScript :
La propriété 'utilisateur' n'existe pas sur le type 'Demande'.
J'ai rapidement réalisé que cela se produisait parce que l'objet Request par défaut d'Express n'incluait pas de propriété utilisateur, et TypeScript n'en était pas content.
Mon correctif initial
Pour résoudre ce problème, j'ai étendu l'interface Request pour ajouter la propriété user. Voici comment j'ai procédé :
// src/types/express.d.ts import { User } from '@prisma/client'; // Assuming User is a Prisma model declare global { namespace Express { interface Request { user?: User; // Add user to the Request interface } } }
{ "compilerOptions": { //extra options here "typeRoots": ["./node_modules/@types", "./src/types"] // Add the types folder } }
À ce stade, l'erreur a disparu de mon éditeur de code, j'ai donc pensé avoir résolu le problème. Mais lorsque j'ai essayé d'exécuter le projet, j'ai rencontré une autre erreur dans le terminal :
erreur TS2339 : la propriété 'utilisateur' n'existe pas sur le type 'Demande'.
Coincé pendant des jours
J'ai passé 3 à 4 jours à résoudre ce problème, en essayant tout ce que je pouvais trouver en ligne. J'étais complètement bloqué et je n'arrivais pas à comprendre pourquoi cela ne fonctionnait pas.
La solution
Finalement, j'ai découvert le problème racine et je l'ai résolu en suivant ces étapes :
npm install -g typescript
Exécutez le compilateur TypeScript en mode Montre : J'ai utilisé l'indicateur --watch pour recompiler automatiquement mon code TypeScript pendant que je travaillais :
tsc --watch
Redémarrer mon éditeur de code : j'ai redémarré mon éditeur (VS Code dans mon cas) pour m'assurer que tout était correctement chargé.
Exécuter le projet : après le redémarrage, j'ai réexécuté le projet et cela a fonctionné !
Conclusion
Ce que je pensais être un petit problème s'est transformé en jours de frustration, mais j'ai finalement réussi à le faire fonctionner ! Si vous rencontrez des problèmes similaires avec TypeScript ne reconnaissant pas les nouvelles propriétés sur l'objet Request d'Express, n'oubliez pas de :
Étendez correctement l'interface de requête.
Assurez-vous que le compilateur TypeScript (tsc) est installé et fonctionne correctement.
J'espère que cela aidera tous ceux qui sont coincés comme moi !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3