Definitelytyped: Les saisies express semblent s'étouffer avec le middleware

Créé le 30 mai 2018  ·  3Commentaires  ·  Source: DefinitelyTyped/DefinitelyTyped

  • [√] J'ai essayé d'utiliser le package @types/xxxx et j'ai eu des problèmes.
  • [√] J'ai essayé d'utiliser la dernière version stable de tsc. https://www.npmjs.com/package/typescript
  • [√ ] J'ai une question inappropriée pour StackOverflow .
  • [ √] [Mention](https://github.com/blog/821-mention-somebody-they-re-notified) les auteurs (voir Definitions by: dans index.d.ts ) afin qu'ils puissent répondre.

    • Auteurs : @borisyankov @19majkel94 @kacepe @micksatana @samijaber

J'ai le problème actuel avec @types/express 4.11.1 & TSC 2.8.3.

Le code suivant ne peut pas compiler :

function aMiddleware(req: Request, res: Response, next: NextFunction) {
    next();
}

app.get('/foo/bar', aMiddleware);

J'obtiens l'erreur suivante :

TS2345: Argument of type '(req: Request, res: Response, next: NextFunction) => void' is not assignable to parameter of type 'RequestHandlerParams'.
  Type '(req: Request, res: Response, next: NextFunction) => void' is not assignable to type '(RequestHandler | ErrorRequestHandler)[]'.
    Property 'includes' is missing in type '(req: Request, res: Response, next: NextFunction) => void'.

Commentaire le plus utile

Salut Jimmy,

Vous devez importer comme ceci...

import { Express, Request, Response, NextFunction } from 'express';
const express = require('express');

const app: Express = express();

function aMiddleware(req: Request, res: Response, next: NextFunction) {
    next();
}

app.get('/foo/bar', aMiddleware);

La raison en est que Request , Response , NextFunction de Node.js ne sont pas identiques à Express.

J'espère que cela t'aides.

Tous les 3 commentaires

Salut Jimmy,

Vous devez importer comme ceci...

import { Express, Request, Response, NextFunction } from 'express';
const express = require('express');

const app: Express = express();

function aMiddleware(req: Request, res: Response, next: NextFunction) {
    next();
}

app.get('/foo/bar', aMiddleware);

La raison en est que Request , Response , NextFunction de Node.js ne sont pas identiques à Express.

J'espère que cela t'aides.

Merci, je vais essayer ça !

Cela fonctionne très bien. Merci beaucoup, encore.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

variousauthors picture variousauthors  ·  3Commentaires

victor-guoyu picture victor-guoyu  ·  3Commentaires

JWT
svipas picture svipas  ·  3Commentaires

Zzzen picture Zzzen  ·  3Commentaires

alisabzevari picture alisabzevari  ·  3Commentaires