我對打字稿/快遞很陌生,我在匯入中間件時遇到了問題。
事實上,我有一個模塊auth.ts,在不久的將來會包含幾個中間件。這是它當前的實作(只有一個中間件以保持簡單)。
import { Request, Response } from "express";
import jwt, { JwtPayload } from "jsonwebtoken";
export function getConnectedPerson(req: Request, res: Response, next) {
try {
const token = req.headers.authorization.split(' ')[1];
const { personId } = jwt.verify(token, process.env.TOKEN_SEED) as JwtPayload;
res.locals.personId = personId;
next();
} catch {
res.status(401).send("Invalid request");
}
}
這是我的控制器實作:
import { Request, Response, Router } from "express";
import { autoInjectable } from "tsyringe";
const authMiddleware = require("auth")
@autoInjectable()
export class ActivityController {
constructor() {
}
initRoutes(router: Router) {
router.get('/activities', [
authMiddleware.getConnectedPerson
],async (req: Request, res: Response) => {});
}
}
啟動我的應用程式時,出現以下錯誤:
Error: Route.get() requires a callback function but got a [object Object]
我對所有可能的匯入/匯出/需要變體有點迷茫。你知道我的實作有什么問題嗎?
uj5u.com熱心網友回復:
在 auth.ts 中,我覺得匯出出錯了。請進行以下更改并嘗試
import { Request, Response } from "express";
import jwt, { JwtPayload } from "jsonwebtoken";
function getConnectedPerson(req: Request, res: Response, next) {
try {
const token = req.headers.authorization.split(' ')[1];
const { personId } = jwt.verify(token, process.env.TOKEN_SEED) as JwtPayload;
res.locals.personId = personId;
next();
} catch {
res.status(401).send("Invalid request");
}
}
function getConnectedPerson_1(req: Request, res: Response, next) {
// some operation
console.log("second function export");
next();
}
exports.getConnectedPerson = getConnectedPerson;
exports.getConnectedPerson_1 = getConnectedPerson_1;
在控制器中:-
import { Request, Response, Router } from "express";
import { autoInjectable } from "tsyringe";
//const authMiddleware = require("auth")
const { getConnectedPerson, getConnectedPerson_1 } =require("./auth")
@autoInjectable()
export class ActivityController {
constructor() {
}
initRoutes(router: Router) {
router.get('/activities', [ getConnectedPerson, getConnectedPerson_1 ],async (req: Request, res: Response) => {});
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/378345.html
標籤:表达
上一篇:型別錯誤:hbs不是函式
