ES2015 Node.js 中的可选导入

Kla*_*mon 5 javascript import node.js ecmascript-6

有没有办法使用 ES2015(使用import语法)仅在模块存在时导入模块?

例如,如果可以安装本机编译的模块,我想使用它,但如果由于任何原因失败,则回退到纯 js 模块。

我原以为以下内容会起作用:

let crc32;
try {
  import Sse4Crc32 from 'sse4_crc32';
  crc32 = Sse4Crc32.calculate;
} catch (e) {
  import crcJs from 'crc';
  crc32 = crcJs;
}
Run Code Online (Sandbox Code Playgroud)

但是它给出了错误'import' and 'export' may only appear at the top level。有没有办法使用importES2015 中的语法来做到这一点?

glu*_*ued 3

这在 ES2015 中是不可能的,导入仅在顶层起作用。由于您使用的是节点,因此在这种情况下我会使用 require 。