【问题标题】:Can't handle routes using Express无法使用 Express 处理路线
【发布时间】:2015-07-19 02:54:04
【问题描述】:

我刚刚开始,这里有一个准系统应用程序,其中包含一个路由文件 ./routes/index.js。

当我浏览到 http://localhost:3000/index 时,例如 index.js 被命中,但没有任何路由匹配,程序直接进入“return router;”。如果我浏览到http://localhost:3000/,我会再次得到相同的结果。

浏览器所做的只是考虑一下,然后给我一个 ERR_CONNECTION_RESET。

app.js

var express = require('express');
var logger = require('morgan');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var flash = require('connect-flash');

mongoose.connect('mongodb://localhost/blah');

var app = express();

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(flash());

app.use(require('./routes/index'));

module.exports = app;

index.js

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

function authorize(req, res, next) {
    if (true) {
        next()
    } else {
        res.status(403).send('Forbidden')
    }
}

module.exports = function(){

    router.get('/index', function(req, res) {
        res.send('index');
    });

    router.get('/hello/:name', function(req, res) {
        res.send('hello ' + req.params.name + '!');
    });

    router.get('/', function(req, res) {
        res.send('root');
    });

    return router;
}

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    app.js 缺少一行来实际启动服务器。你需要添加这个:

    app.listen(3000);
    

    【讨论】:

    • 我正在使用 Webstorm,所以我相信这是以某种方式连接的(当我启动它时,我的控制台显示“服务器正在侦听端口 3000”)。我可以看到服务器正在接收请求。调试程序时直接返回路由器(绕过router.gets)
    • router.get() 操作只是注册路由处理程序。它应该只执行它们,然后在您的服务器启动时返回,因为在启动时除了注册您想要处理程序的路由之外没有什么可做的。至于 webStorm,我已经评论了你展示的代码。我猜你是说有更多的代码。也许其他代码也是您问题的一部分。如果没有看到所有相关的内容,我们就不会知道。
    【解决方案2】:

    到了最后……我变了

    module.exports = function(){
    
        router.get('/index', function(req, res) {
            res.send('index');
        });
    
        router.get('/hello/:name', function(req, res) {
            res.send('hello ' + req.params.name + '!');
        });
    
        router.get('/', function(req, res) {
            res.send('root');
        });
    
        return router;
    }
    

    router.get('/index', function(req, res) {
        res.send('index');
    });
    
    router.get('/hello/:name', function(req, res) {
        res.send('hello ' + req.params.name + '!');
    });
    
    router.get('/', function(req, res) {
        res.send('root');
    });
    
    module.exports = router;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 2019-02-19
      • 2017-05-18
      • 2015-06-12
      相关资源
      最近更新 更多