节点找不到没有.js扩展名的模块
我有一个文件-test.js,其中包含以下几行代码:
import {blabla} from "./bla";
async function dataGenerator() {
..........
}
(async() => {
console.log('1')
await dataGenerator()
console.log('2')
})()
注意:忽略导入结构。对于这个问题来说是虚构的。 在我的文件中,导入是自动的。
当我尝试使用";节点test.js";从终端运行时,返回错误:
我已将行:";type";:";MODULE";添加到Package中。如果不这样做,它将返回:找不到从D:est.js导入的模块‘D:la’
不能在模块外使用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
模式。
相关文章