【问题标题】:Defining a ExpressJS route from a Typescript class从 Typescript 类定义 ExpressJS 路由
【发布时间】:2016-03-17 23:25:47
【问题描述】:

我正在尝试从 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 类注册路由。我做错了什么?

【问题讨论】:

    标签: node.js express typescript


    【解决方案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'});
    };
    

    【讨论】:

    • 这没有回答问题,他们在询问课程
    • 同意,我也在寻找基于类的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多