如何从Koa路由器调用控制器方法

时间:2019-05-14 08:14:12

标签: typescript routing middleware koa

我正在尝试从koa-router调用方法,但出现以下错误;

  

[ts]   类型的参数(req:请求,res:响应)=> Promise不能分配给IRouterParamContext类型为'Middleware<ParameterizedContext<any的参数。

我也尝试了yield,但是没有调用控制器方法。

下面是我的路由器代码;

import * as Router from 'koa-router';
import * as controller from "../controllers/index";
const router = new Router();
router.get("/", controller.index);
export {router};

在控制器中,我试图以一种如下所示的方法呈现index.ejs

export let index = async (req: Request, res: Response) => {
    res.ctx.render("./index", {page: "Home", menuId: "home"});
};

我在做什么错以及如何解决?

1 个答案:

答案 0 :(得分:0)

我比赛有点迟了,但是我很难找到解决方案,所以这里是:

您只需要使用koa的ParameterizedContext而不是默认值即可。

import * as Koa from "koa";
import Router from "koa-router";

const router = new Router();

router.get("/", (ctx: Koa.ParameterizedContext) => {
    return ctx.render('index');
});