Search code examples
javascriptexpressecmascript-6destructuringexpress-router

Using object destructuring to require() Express Router


This code works:

const express = require('express');
const Router = express.Router();

Router.get('/hello-world', (req, res, next) => {                                     
    res.send("hello world!"); //works great                   
});

But this code doesn't:

const {Router} = require('express');

Router.get('/hello-world', (req, res, next) => {                                     
    res.send("hello world!"); // :( doesnt work                  
});

What am I misunderstanding about destructuring? Thanks


Solution

  • You would still need to call the function:

    const {Router} = require('express');
    Router().get('/hello-world', (req, res, next) => {
    //    ^^
        res.send("hello world!"); // :( doesnt work                  
    });
    

    What am I misunderstanding about destructuring?

    The code

    const {Router} = require('express');
    

    is equivalent to

    const temp = require('express');
    const Router = temp.Router;
    

    but you were doing

    const express = require('express');
    const Router = express.Router();
    //                           ^^