是否可以让 Node 不需要“.js”扩展名来导入?

Is it possible to make Node NOT Require the ".js" Extension For Imports?

Node 现在内置了对导入的支持,这很棒。但是这种支持需要您指定文件扩展名,这很烦人。

我敢肯定这是有原因的(可能与他们对 .mjs 扩展的怪异痴迷有关),但是有什么办法可以解决这个问题并使 import 工作 "like normal"(你可以在哪里关闭 .js)?

我用 esm 包解决了这个问题。

简而言之,Node 组织在推出 ES 模块支持方面做得很糟糕,但值得庆幸的是,与此同时,制作 Lodash 库的人已经添加了更好的支持,而且超级简单得到。

两步:

  1. npm i esm
  2. node -r esm index.js(而不仅仅是 node index.js

如果你只是做上面的你不需要任何特殊的节点标志(比如experimental-modules)或其他任何东西,ES模块语法(import/export)将在您的应用程序中完美运行...包括不需要 .js 导入。

您可以通过使用 --experimental-specifier-resolution=node 命令行开关在 package.json 和 运行 nodejs 的顶层设置 "type": "module" 来实现此目的(适用于 nodejs v14)