如何在 Chrome Devtools JS 控制台中从 'http://bar.org/some-esm-module.js' 导入 blah?

How do I `import blah from 'http://bar.org/some-esm-module.js'` in the Chrome Devtools JS console?

当我尝试从 Chrome devtools / javascript 控制台使用 ESM 导入时,它会抱怨:

> import Confetti from 'https://cdn.skypack.dev/canvas-confetti'

Uncaught SyntaxError: Cannot use import statement outside a module

有什么方法可以说服 chrome 控制台以 type='module' 的形式执行,这样我就可以使用模块语句了吗?或者另一种解决此问题的方法仍然允许交互式导入 ESM 模块以进行交互式开发?

我一直在大量使用 ESM 模块,尤其是 Skypack 自动转换的大型 NPM ESM 模块库。这在静态开发中效果很好,但我是 REPL / 浏览器 devtools 的重度用户。

即使找到我可以用来加载 ESM 模块的第三方 fakeImport(urlToESM) 函数,对我来说也会极大地提高工作效率。

动态导入可能会派上用场。

import('/modules/my-module.js')
  .then((module) => {
    // Do something with the module.
});

You can use await with it.

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

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports

Dynamic import() 和 top-level await 应该有效:

const { default: Confetti } = await import('https://cdn.skypack.dev/canvas-confetti');