J'essaye de construire un projet typeScript mais il a une erreur et je ne sais pas d'où il vient et rien n'a changé depuis la dernière fois.
node_modules/connect-mongo/src/types.d.ts:113:66 - error TS2694: Namespace 'Express' has no exported member 'SessionData'. 113 get: (sid: string, callback: (err: any, session: Express.SessionData | null) => void) => void; ~~~~~~~~~~~ node_modules/connect-mongo/src/types.d.ts:114:45 - error TS2694: Namespace 'Express' has no exported member 'SessionData'. 114 set: (sid: string, session: Express.SessionData, callback?: (err: any) => void) => void; ~~~~~~~~~~~ node_modules/connect-mongo/src/types.d.ts:118:47 - error TS2694: Namespace 'Express' has no exported member 'SessionData'. 118 touch: (sid: string, session: Express.SessionData, callback?: (err: any) => void) => void; ~~~~~~~~~~~ src/controllers/http/auth/auth.ts:16:44 - error TS2339: Property 'user' does not exist on type 'Session & Partial<SessionData>'. 16 if (req.session && req.session.user) { ~~~~ src/controllers/http/auth/auth.ts:41:29 - error TS2339: Property 'user' does not exist on type 'Session & Partial<SessionData>'. 41 req.session.user = user; ~~~~
3 Réponses :
Pour la vérification du type de lib connect-mongo, essayez d'ajouter l'option skipLibCheck
à votre tsconfig.json
// @ts-ignore req.session.user = user;
Pour le code en ligne, essayez d'ajouter // @ts-ignore
{ "compilerOptions": { .... "skipLibCheck": true } }
Veuillez noter que ce n'est qu'une solution de contournement, j'ai rencontré le même problème aujourd'hui lorsque j'essaie de reconstruire l'image du docker sur le DockerHub sans qu'aucun code ne soit modifié.
Je suis revenu à cette version pour résoudre le problème: "@ types / express-session": "1.15.16",
Il semble que l'interface SessionData
été supprimée de l'espace de noms global Express
, à l'ancienne ligne 24 le 13 octobre, et récemment publiée dans les modules DefinatelyTyped correspondants -
Beaucoup de discussions ici - https://github.com/DefinitelyTyped/DefinatelyTyped/pull/46576
Je soupçonne que cela sera éventuellement mis à jour dans le code connect-mongo
à un moment donné, mais en attendant, vous pouvez le contourner avec l'indicateur skipLibCheck
mentionné par @benhu, ou, si vous souhaitez laisser cette fonctionnalité activée pour d'autres bibliothèques, vous pouvez ajouter l'interface dans votre propre code quelque part avec quelque chose comme ceci:
// WORKAROUND TODO: Remove when the connect-mongo types are updated declare global { namespace Express { interface SessionData { cookie: any } } }
Comment l'importez-vous? Pouvez-vous partager cet extrait de code s'il vous plaît
Oui, j'ai ajouté i.stack.imgur.com/HnP6K.png
Même problème ici