Philipp Mochine
Philipp Mochine

Reputation: 4705

JS - How to dynamically import a module await it and then export the module?

I'm trying to dynamically import a module. But I'm not able to figure it out, how to export it correctly.

const calendarLocale = async () => await import(`./lang/calendar/${lang}`);

const messages = {
    [lang]: {
      ...calendarLocale()
    }
}

export default new VueI18n({
   locale: lang, // set locale
   messages, // set locale messages
});

Because it's asynchronous the value in messages is always empty.

Upvotes: 2

Views: 1679

Answers (1)

Bergi
Bergi

Reputation: 664513

This is not possible - it would require top-level await, which currently is a proposal only.

All you can do is export a promise:

export default import(`./lang/calendar/${lang}`).then(calendarLocale => new VueI18n({
   locale: lang, // set locale
   messages: {
     [lang]: calendarLocale
   }, // set locale messages
}));

Upvotes: 3

Related Questions