Martin James
Martin James

Reputation: 930

Webpack - Dynamically importing a class

I'm trying to dynamically import a class when a router condition is met.

I have no problems importing a standard (non-class) module, as this works as expected:

Router.on({
    '/:region/map': (params) => {
      import("Controllers/map.js" /* webpackChunkName: "map" */).then(({map}) => {
        map.initialise(params.region);
      });
    }
});

But trying to do the same with a class is not working as expected.

Router.on({
    '/:region/map': (params) => {
      import("Controllers/map.js" /* webpackChunkName: "map" */).then(Map => {
        Map.initialise(params.region);
      });
    }
});

Which fails 'e.initialise is not a function';

I also try to instantiate the class by using the new keyword:

Router.on({
    '/:region/map': (params) => {
      import("Controllers/map.js" /* webpackChunkName: "map" */).then(Map => {
        const MapClass = new Map();
        MapClass.initialise(params.region);
      });
    }
});

But still no joy!

How do I dynamically import a class in this scenario?

UPDATE:

This is my Map module, as a non-class module, which works:

var map = {
    initialise(region) {
        console.log("Map initialised for region: " + region);
    }
}
export { map };

This is the same module but as a Class:

export default class Map {
    constructor() {
        //
    }
    initialise(region) {
        console.log("Map initialised for region: " + region);
    }
}

Upvotes: 1

Views: 1920

Answers (1)

Mohit Tilwani
Mohit Tilwani

Reputation: 2786

  class Map {
    constructor() {
        //
    }
    initialise(region) {
        console.log("Map initialised for region: " + region);
    }
  } 

     export { Map }




      Router.on({
        '/:region/map': (params) => {
          import("Controllers/map.js").then(({ Map })=> {
            const MapClass = new Map();
            MapClass.initialise(params.region);
          });
        }
      });

can you try the above code and see are you getting Class in console

Upvotes: 2

Related Questions