从Typescript类定义ExpressJS路由

我试图从一个Typescript类加载ExpressJS路线。 这个想法是,这应该最终是dynamic路线。 但是我已经被困在一个class上定义硬编码路线了。

我的index.ts js看起来像这样:

 import generic = require('./generic'); import Generic = generic.Generic; class Test { private app:any; private port:number = 3000; constructor() { this.app = express(); new Generic(); this.app.listen(this.port, () => { console.log('Listening on port ' + this.port); }); } } export = Test; new Test(); 

然后我的generic.ts看起来像这样。 我试图从这个类定义另一条路线:

 module Generic { export class Generic { constructor() { console.log('In generic'); var router:any = express.Router(); router.get('/', function (req, res) { res.setHeader('Content-Type', 'application/json'); res.status(200).send("AAA"); }); } } } export = Generic; 

当我运行我的应用程序,然后我看到消息在通用出现在控制台。 但是当我加载我的浏览器时,它说:

 Cannot GET / 

所以出于某种原因,它并不真正注册Generic类的路由。 我究竟做错了什么?

看看微软的github页面上的示例 。 而不是使用express.Router ,他们只是使用get和从外部模块导入function。 它为我工作得很好。

app.ts

 import * as express from "express"; import * as routes from "./routes/index"; var app = express(); app.get('/', routes.index); 

路线/ index.ts

 import express = require("express") export function index(req: express.Request, res: express.Response) { res.render('index', { title: 'ImageBoard'}); };