2016-09-29 131 views
0

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

这里是我的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); 

这里是我的 '时间戳' 文件:

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; 

这里是什么应该发生:

本地主机/时间戳应给我“Hello World!” 本地主机/时间戳/ someDate应该给我一份有日期的JSON文件

但这里到底发生了什么:

本地主机/时间戳给了我与日期的JSON文件 本地主机/时间戳/ someDate给了我一个无法获取错误 而“Hello World”从未显示

+0

不应该本地主机/时间戳抛出一个错误,因为你不会提供日期参数? – kalin

回答

3

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

我想你打算安装的时间戳路由器中间件/timestamp路径上,而不是作为一个回调的GET请求这是目前你在做什么。