如何使用异步ESM导入获取ESM模块

时间:2019-06-19 01:47:22

标签: javascript object ecmascript-6 es6-module-loader

我的代码如下:

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

但是我得到的是

  

VM662 script.js:5未捕获(承诺)TypeError:事情不是构造函数

?

2 个答案:

答案 0 :(得分:2)

您的问题是您正在尝试阅读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();
  }
)

答案 1 :(得分:0)

import不是函数。这样做:

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