【问题标题】:"Cannot use import statement outside a module" and "Uncaught SyntaxError: Unexpected identifier" when importing a class导入类时“不能在模块外使用导入语句”和“未捕获的语法错误:意外的标识符”
【发布时间】:2021-12-16 17:07:32
【问题描述】:

我正在尝试将一个类导入到我的“main.js”文件中。这是我的代码的缩小版。

// "extended.js" file

export default class Test {
  constructor() {
    this.prop = "Hello"
    console.log(this.prop)
  }
}


// "main.js" file

window.onload = function () {
  import Test from "./extended"
  new Test()
}

main.js 文件是我的 Express 应用程序的前端 JavaScript 文件,因此它存储在“public”文件夹中。当您加载页面时,发生的初始错误是“无法在模块外使用导入语句”。我自己做过研究,很多人都说使用 “main.js”脚本标签的type="module" 将解决该问题。当我这样做时,错误变为“未捕获的语法错误:意外的标识符”。关于如何使用 ES6 模块和类,我有什么遗漏吗?

【问题讨论】:

    标签: javascript class ecmascript-6


    【解决方案1】:

    您只能在顶层导入 - 不能在块内完成。改变

    window.onload = function () {
      import Test from "./extended"
      new Test()
    }
    

    import Test from "./extended"
    window.onload = function () {
      new Test()
    };
    

    不过,我也建议不要为副作用创建类 - 如果您只想让类 某事,而不是 返回 有用的东西,请使用而是一个普通的函数。

    export default () => {
      const prop = "Hello";
      console.log(prop);
    };
    

    【讨论】:

    • 这解决了问题,但我现在收到一个新错误,“GET localhost:5000/extended net::ERR_ABORTED 404 (Not Found)”。我猜这与服务器有关。我已经在使用“express.static()”所以我不确定这里发生了什么。
    • 您是不是要导入extended.js,而不仅仅是extended
    • 解决了这个问题,谢谢!我使用了自动完成功能,所以我没有想太多。
    猜你喜欢
    • 2023-03-20
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多