我正在尝试从Typescript类加载ExpressJS
路由。这个想法是,这最终应该是动态路线。但我已经坚持在课堂上定义硬编码路线。
我的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;
当我运行我的应用程序时,我看到控制台中出现 In generic 消息。但是当我加载浏览器时,它说:
Cannot GET /
因此,由于某种原因,它并没有真正从Generic
类注册路线。我做错了什么?
答案 0 :(得分:1)
看看sample on Microsoft's github page。他们只使用express.Router
而不是使用get
,而是从外部模块导入函数。它对我来说效果很好。
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'});
};