Zoeken op website

node.js - Nodejs express-app faalt bij gebruik van middleware op route


Ik krijg de foutmelding Eigenschap 'admin' bestaat niet op type 'Request<{}, any, any, ParsedQs, Record>'. Ook zal de Node.js-app niet draaien omdat deze faalt met dezelfde fout. Ik gebruik TypeScript

app.get('/users', auth, (req, res) => {
    console.log(` User is admin = ${req.admin}`);
    console.log('Users Page');
    res.send('Users Page');
});

function auth(req, res, next) {
    if (req.query.admin === 'true') {
        req.admin = true;
        next();
    } else {
        res.send('No auth');
    }
}

Antwoord #1

Zorg er ook voor dat je de URL correct structureert, zoiets als dit http://localhost:3000/users?admin=true

import { NextFunction, Request, Response } from 'express';


app.get('/users', auth, (req: Request, res: Response) => {
    console.log(` User is admin = ${req.admin}`);
    console.log('Users Page');
    res.send('Users Page');
});


declare module 'express-serve-static-core' {
  export interface Request {
    admin: boolean;
  }
}

function auth(
req: Request<{}, {}, {}, {admin: boolean}>,
res: Response, 
next: NextFunction) {
    if (req.query.admin === 'true') {
        req.admin = true;
        next();
    } else {
        res.send('No auth');
    }
}