【问题标题】:Express.js 4 - Router Partition Example Code FailsExpress.js 4 - 路由器分区示例代码失败
【发布时间】:2014-07-03 00:03:46
【问题描述】:

编辑 对于那些刚刚发现这一点的人,Express 的文档在此示例中有一个错误。您需要在部分中使用next(); 语句:

people.use(function(req, res, next) {
    next();//Added to make example work
});

原帖

如果您查看“Routes”下的Express 4.0 documentation,建议使用路由器拆分应用程序的方法。我试着做一个示例应用程序。

app.js

var express = require('express');
var app = express();
var port = process.env.PORT || 8080;

app.route('/').get(function(req, res, next) {
    res.send('Hello World');
});

//Try to use modular routes ...
app.use('/people', require('./routes/people').people);

//Start up server
app.listen(port);
console.log('Magic happens on port ' + port);

people.js

var express = require('express'); //<- Included because it throws an error otherwise
var people = express.Router();

people.use(function(req, res, next) {
});

people.get('/', function(req, res, next) {
});

module.exports.people = people;

目录结构

/
app.js
/routes
    people.js

当我运行项目并导航到“localhost:8080”时,我得到了预期的“Hello World”响应。但是,当我转到 'localhost:8080/people' 时,浏览器只是坐着旋转。由于这是项目本身的示例代码,我很惊讶这不起作用。有什么想法吗?

谢谢!

【问题讨论】:

    标签: javascript node.js express directory


    【解决方案1】:
    1. people.use 需要调用 next 函数以便调用链中的下一个中间件/路由
    2. 在发送数据之前,连接将保持活动状态,因此people.get('/', ...) 需要向客户端发送回一些内容

    以下people.js 应提供所需的结果:

    var express = require('express');
    var people = express.Router();
    
    people.use(function(req, res, next) {
      next();
    });
    
    people.get('/', function(req, res, next) {
      res.send('people!');
    });
    
    module.exports.people = people;
    

    【讨论】:

    • 感谢提姆的指点。只是为了澄清我的理解,调用的路线的顺序取决于它们的 source 顺序,对吗?我计划让这个架构成为我新应用程序的主干。有什么理由不这样做吗?
    • @DiodeDan:调用的路由顺序取决于它们的源顺序,正确是正确的。
    【解决方案2】:

    因为你只是设置了路由/,所以不要在people.js中设置路由/people你应该写:

    people.get('/people', function(req, res, next) { });

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 2019-02-02
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多