Как получить модуль ESM с помощью импорта Async ESM - PullRequest
2 голосов
/ 19 июня 2019

У меня есть следующий код в plunker ...

// Thing.js
export class Thing{
  constructor(){
    console.log("This thing is alive!!!!");
  }
}
// index
import("./Thing.js").then(
  (Thing)=>{
      new Thing();
  }
)

Но я получаю

VM662 script.js: 5 Uncaught (в обещании) TypeError: Дело не в конструкторе

Ответы [ 2 ]

2 голосов
/ 19 июня 2019

Ваша проблема в том, что вы пытаетесь прочитать Thing, как если бы это был экспорт по умолчанию, а не именованный экспорт. Любой из них будет работать:

// Thing.js
export class Thing{
  constructor(){
    console.log("This thing is alive!!!!");
  }
}
// index
import("./Thing.js").then(
  ({Thing})=>{ // NOTE destructuring since Thing is a named export
      new Thing();
  }
)

или это

// Thing.js
export default class Thing{ // NOTE default
  constructor(){
    console.log("This thing is alive!!!!");
  }
}
// index
import("./Thing.js").then(
  (Thing)=>{ // No destructuring needed, can read Thing directly
      new Thing();
  }
)
0 голосов
/ 19 июня 2019

import не является функцией.Сделайте это:

const { Thing } = import "./Thing.js";
let myThing = new Thing();
...