Express: Routing issue with Express 4.14.0

Created on 31 Aug 2016  路  2Comments  路  Source: expressjs/express

When I visit localhost:9000 it keeps waiting.

My index.js is defined as

'use strict';

const express = require('express');
const mongoose = require('mongoose');
const helmet = require('helmet');

const dbconfig = require('./config/database');

var app = express();

//Security
//app.use(helmet.xssFilter());
//app.use(helmet.hidePoweredBy());
//app.use(helmet.noSniff());

//Load Routes
const defaultRoutes = require('./routes/defaultRoutes');

// app.get("/", function(req, res) {
//     res.send('Test !');
// });

app.use('/', defaultRoutes);

// app.get("*", function(req, res) {
//   res.redirect('http://main.domain');
// });

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 9000);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");


app.listen(app.get('port'), app.get('ip'), function() {
    console.log('%s: Node server started on %s:%d ...', Date(Date.now()), app.get('port'), app.get('ip'));
});

And defaultRoutes.js

'use strict';
const express = require('express');

var routes = function() {
    let defaultRouter = express.Router();
    defaultRouter.use(function(req, res, next) {
        console.log(req.method, req.url);
        next();
    });

    defaultRouter.get('/', function(req, res) {
        res.send('Home page');
    });
    return defaultRouter;
};

module.exports = routes;

When I visit localhost:9000 it keeps waiting.

If i comments defaultRoutes and uncomment below code it works.

// app.get("/", function(req, res) {
//     res.send('Test !');
// });

This code was used previously without const and let keywords and worked perfectly.

question

Most helpful comment

This would be expected. It's using defaultRoutes (used with .use('/', defaultRoutes)) but that is just a function that doesn't call next or respond. It looks like a pretty simple typo, just change .use('/', defaultRoutes) to .use('/', defaultRoutes()) <- notice the function call to defaultRoutes returning the router you want to use.

All 2 comments

This would be expected. It's using defaultRoutes (used with .use('/', defaultRoutes)) but that is just a function that doesn't call next or respond. It looks like a pretty simple typo, just change .use('/', defaultRoutes) to .use('/', defaultRoutes()) <- notice the function call to defaultRoutes returning the router you want to use.

Thanks @blakeembrey

Was this page helpful?
0 / 5 - 0 ratings