nodejs中的路由器似乎没有像我预期的那样工作

时间:2015-09-15 18:35:11

标签: node.js express

我正在构建一个简单的应用程序来教自己节点,我遇到了这个问题。

根本没有执行Console.log。你知道为什么吗?

我有404错误,但没有别的。应用程序没有崩溃,我只是无法得到这个观点。

 router.get('/charts/top/:exercise', function(req, res, next) {
      console.log("exercise: " + req.params.exercise);
      res.render("top", {});
    });

解决方案:因为这是在charts.js文件中的单独路径文件夹中,所以不应该是/ charts而是/ top /:exercise

1 个答案:

答案 0 :(得分:1)

假设您的路由器来自:

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

您需要为服务器导出此模块,以了解这些路由是否已得到处理。以下内容:

module.exports = router;

在所有路线定义下。

现在,您的应用只需要使用要处理的路由调用此文件。

var handler = require('./handler');
-Some code-
app.use('/', handler);

.use将设置路由的主枢轴到您的路由器。它给球带来了它。在这个例子中,来自/的所有内容都将传递给路由器。如果你真的想要清理它,可以将文件中的路由器变量更改为图表,并在应用程序中将其用于以/ chart开头的所有内容

然后在您的图表文件中,您将能够处理/ top /:exercice

您可以使用.use创建多个级别的路由,以设置新的处理点。

另外,我想指出你的函数中不需要“next”,因为你没有回调。

编辑:请记住,如果可以处理2条路线,它将始终是第一个被捕获的路线。这样,声明一些路由后面带有if else逻辑。首先给出更具体的选择。