【问题标题】:Uncaught SyntaxError with "await import(...)" [duplicate]带有“等待导入(...)”的未捕获的 SyntaxError [重复]
【发布时间】:2021-04-23 13:07:29
【问题描述】:

当我尝试使用下面的代码动态导入 JS 模块时,我在 Firefox 和 Chrome 中都得到了 "Uncaught SyntaxError: unexpected reserved word",但 According to MDN 它应该可以工作。

let module = await import('/modules/my-module.js');

当我使用.then() 而不是await 时,一切正常。 MDN 错了吗?

【问题讨论】:

  • 不支持顶级等待,您可能需要将其包装在 IIFE 中

标签: javascript module ecmascript-2016


【解决方案1】:

你应该在这个函数声明中写“async”

 const my_func = async (arg1,arg2) => {
  let module = await import('/modules/my-module.js');
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

【讨论】:

    【解决方案2】:

    通过尝试在模块的顶层使用await,我能够重现此错误。

    通常我希望看到类似于“不能在异步函数之外使用 await”的错误,但这里不是这种情况。

    在异步函数中移动 await import 解决了这个问题:

    <script type="module">
        (async function () {
            let module = await import('/modules/my-module.js');
            console.log(module);
        })();
    </script>
    

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 1970-01-01
      • 2021-06-10
      • 2016-12-09
      • 1970-01-01
      • 2018-03-11
      • 2018-04-20
      • 2018-05-09
      • 1970-01-01
      相关资源
      最近更新 更多