ExpressJS路由错误

时间:2016-09-29 23:32:04

标签: node.js express

我正在尝试创建一个微服务集合。问题是,我的路线似乎没有重定向到正确的位置。

这是我的index.js文件:

var express = require("express");
var app = express();
var port = process.env.PORT || 3000;
var timestamp = require("./routes/timestamp");

app.listen(port, function(){
    console.log("Listening on port " + port);
});

app.get("/", function(req, res){
    res.writeHead(200, {"Content-Type": "text/html"});
    res.end("Hi! This is a collection of microservices. <a href='https://github.com/Humad/timestamp-microservice'>See instructions here.</a>");
});

app.get("/timestamp", timestamp);

这是我的'timestamp'文件:

var express = require('express');
var router = express.Router();
var moment = require("moment");

router.get("/", function(req, res){
    res.send("Hello world!");
});

router.get("/:date", function(req, res){
    var newDate = req.params.date;

    var natural = moment.utc(newDate, "MMMM D, YYYY", true);
    var unix = moment.utc(newDate, "X", true);

    if (natural.isValid() || unix.isValid()) {
        if (natural.isValid()) {
            newDate = natural;
        } else {
            newDate = unix;
        }

        res.json({unix: newDate.format("X"), natural: newDate.format("MMMM D, YYYY")});
    } else {
        res.json({unix: null, natural: null});
    }

    res.end();    
});

module.exports = router;

以下是支持发生的事情:

localhost / timestamp应该给我“Hello World!” localhost / timestamp / someDate应该给我一个日期为

的JSON文件

但这是实际发生的事情:

localhost / timestamp给了我一个带日期的JSON文件 localhost / timestamp / someDate给了我一个Can not GET错误 并且“Hello World”永远不会显示

1 个答案:

答案 0 :(得分:3)

将行app.get("/timestamp", timestamp);更改为app.use("/timestamp", timestamp);

我认为您打算在/timestamp路径上安装时间戳路由器中间件,而不是作为您正在进行的GET请求的回调。