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

2022-03-30 00:00:00 node.js javascript node-modules

我有一个文件-test.js,其中包含以下几行代码:

import {blabla} from "./bla";

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

(async() => {
  console.log('1')
  await dataGenerator()
  console.log('2')
})()

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

当我尝试使用";节点test.js";从终端运行时,返回错误:

找不到从D:est.js导入的模块‘D:la’

我已将行:";type";:";MODULE";添加到Package中。如果不这样做,它将返回:

不能在模块外使用IMPORT语句

我正在使用节点14。

如何才能在不添加所有导入的情况下运行test.js。函数中有函数,函数中有函数,添加.js扩展名比较复杂。有运行它的NPM吗?

谢谢!


解决方案

默认情况下,使用ES模块的import时,Node.js不会尝试猜测文件扩展名。这与require的CommonJS模块不同。

在documentation for the ES module loader中,您可以阅读如何在磁盘上找到文件。

标题‘定制ESM说明符解析算法’说明:

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

相关文章