req可能是类型为“express”包的请求,并且用户在那里不存在。您必须扩展请求与自己的路由器处理程序或强制它输入任何或对象。
尝试res.json(req['user'])
或res.json((<any>req).user)
您也可以使用模块/全球增强
declare module "express" { // declare module "express-serve-static-core"
export interface Request {
user: any
}
}
你也可以让自己的处理程序的包装(而不是ExpressJs扩展路由器功能)。
import * as express from 'express';
interface IUserRequest extends express.Request {
user: any
}
function myHandler(handler: (req: IUserRequest, res: express.Response, next?: express.NextFunction) => any) {
return (req: express.Request, res: express.Response, next: express.NextFunction) => {
try {
validateUser(req, res, (err) => { // your validateUser handler that makes a user property in express Request
if(err)
throw err;
let requestWrapper: IUserRequest = <IUserRequest>req;
handler(requestWrapper, res, next);
})
}
catch (ex) {
next(ex);
}
}
}
let app = express();
// init stuff for express but this.validateUser handler is not needed
app.use('/testuser', myHandler((req, res) => {
res.json(req.user);
}));
可能是因为在req上缺少类型 - 快速修复(req:any,res:any)=> ...否则你可能需要使用一些[类型info for express](https://stackoverflow.com/questions/36037977 /如何安装-express-type-typings) –