mahesh
mahesh

Reputation: 109

using Router in express-4

i am trying to execute below code after upgrading express4

// call the Router
var router = express.Router();

router.get('/test1', function(req, res, next) {

// doing more stuff
res.send('test test1 route')
});

// call our router we just created
app.use('/dogs', dogs);

but for some reason i am getting following error

this._router = new Router({
               ^
TypeError: object is not a function
at Function.app.lazyrouter

can someone help me to solve this problem ,Thank you in advance.

Upvotes: 0

Views: 4343

Answers (3)

mahesh
mahesh

Reputation: 109

we can use this approach for routing in express4, when i am upgrading to express4 i didn't deleted express 3 folder, i tried deleting express3 folder from node modules and installing express4 than this worked fine

Upvotes: 0

Alexander
Alexander

Reputation: 4023

I don't have a reputation to comment. Where and how did you declare your dog? Did you mean the following?:

// call the Router
var router = express.Router();

// call our router we just created
app.use(router);

router.get('/test1', function(req, res, next) {

    // doing more stuff
    res.send('test test1 route')
});

Upvotes: 1

majidarif
majidarif

Reputation: 20095

From the documentation:

var app = express();

app.route('/events')
.all(function(req, res, next) {
  // runs for all HTTP verbs first
  // think of it as route specific middleware!
})
.get(function(req, res, next) {
  res.json(...);
})
.post(function(req, res, next) {
  // maybe add a new event...
})

So try:

var router = app.route();

router.get('......

Or check the 3 to 4 upgrade guide.

Which says:

app.router has been removed and middleware and routes are executed in the order they are added. Your code should move any calls to app.use that came after app.use(app.router) after any routes (HTTP verbs).

app.use(cookieParser());
app.use(bodyParser());
/// .. other middleware .. doesn't matter what

app.get('/' ...);
app.post(...);

// more middleware (executes after routes)
app.use(function(req, res, next);
// error handling middleware
app.use(function(err, req, res, next) {});

Upvotes: 1

Related Questions