Node 找不到没有 .js 扩展名的模块

ics*_*sul 8 javascript node.js node-modules

我有一个文件 - test.js 里面有这些代码行:

import {blabla} from "./bla";

async function dataGenerator() {
..........
}

(async() => {
  console.log('1')
  await dataGenerator()
  console.log('2')
})()
Run Code Online (Sandbox Code Playgroud)

注意:忽略导入结构。这个问题只是虚构的。在我的文件中,导入是自动的。

当我尝试使用“node test.js”从终端运行时,它返回错误:

找不到从 D:\test.js 导入的模块“D:\bla”

我已将以下行添加到包中:“type”:“module”。没有这个它会返回:

不能在模块外使用 import 语句

我正在使用节点 14。

如何在不添加所有导入“.js”的情况下运行 test.js。函数中有函数在函数中,添加.js 扩展名很复杂。是否有任何 npm 来运行它?

谢谢!

Rik*_*kus 8

默认情况下,Node.js 在import用于 ES 模块时不会尝试猜测文件扩展名。这与带有require.

ES 模块加载器文档中,您可以阅读如何在磁盘上找到文件。

标题“自定义 ESM 说明符解析算法”指出:

--experimental-specifier-resolution=[mode]标志可用于自定义扩展解析算法。默认模式是explicit,这需要向加载器提供模块的完整路径。要启用自动扩展解析并从包含索引文件的目录导入,请使用该node模式。

  • ES 模块系统 (ESM) 由该语言的管理者 ECMA,特别是 TC-39 小组开发。CommonJS 模块系统(最先出现)是由 Mozilla 开发的。如果它的行为更符合您的喜好,您可以自由使用 CommonJS——它并没有被弃用。然而,ESM 模块可以更轻松地在浏览器或 Node 替代品(例如 Deno)之间共享。 (6认同)