Javascript Jest/Babel找不到没有路径前缀的模块

Javascript Jest/Babel找不到没有路径前缀的模块,javascript,jestjs,es6-modules,babel-jest,Javascript,Jestjs,Es6 Modules,Babel Jest,我尝试使用ES6模块和Babel来遵循but。我的根文件夹有两个javascript文件sumfn.js和sum.test.js。我的sum.test.js文件如下所示: 从'sumfn'导入{sum}; 测试('1+2等于3',()=>{ 期望(和(1,2))。为(3); }); 然而,Jest似乎在解析sumfn时遇到了问题,尽管它显然找到了文件sunfn.js ● Test suite failed to run Cannot find module 'sumfn' fro

我尝试使用ES6模块和Babel来遵循but。我的根文件夹有两个javascript文件
sumfn.js
sum.test.js
。我的
sum.test.js
文件如下所示:

从'sumfn'导入{sum};
测试('1+2等于3',()=>{
期望(和(1,2))。为(3);
});
然而,Jest似乎在解析
sumfn
时遇到了问题,尽管它显然找到了文件
sunfn.js

  ● Test suite failed to run

    Cannot find module 'sumfn' from 'sum.test.js'

    However, Jest was able to find:
        './sumfn.js'

    You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'json', 'jsx', 'ts', 'tsx', 'node'].

如果我将导入行更改为使用
/sumfn
,它将正常工作。然而,从我读到的有关ES6导入的内容来看,它似乎应该能够在同一目录中找到文件。这在Jest中可能不受支持吗?

您需要添加
/
告诉JavaScript您要查找的模块可以在以下文件路径中找到,相对于当前文件。因此,您需要添加
/
来表示在当前目录中查找
sumfn.js

因此,我感到困惑的主要原因之一是,那里有很多过时的ES6模块指南。事实上,谷歌的许多顶级搜索结果似乎已经过时了。我看了一些指南,比如,和,它们都说可以从模块名导入,而不需要指定路径,例如

从'mymodule'导入{double};
这些被调用,指南说它将在默认情况下搜索当前目录中的匹配模块。然而,现在看起来他们是

让人非常困惑的是,BabelJS和Webpack支持它们,但它遵循不同的约定。例如,Webpack搜索,默认情况下包括
节点\u模块
文件夹。这就是为什么

从“React”导入React;

接下来的计划似乎是让环境决定如何解析这些“裸”说明符()。让每个环境以不同的方式解析这些说明符似乎很危险,这可能会使交叉兼容模块变得很难,但我想这是目前的计划。

但其中说“还需要注意的是,
来自'mymodule'
将在请求导入的文件所在的目录中查找名为mymodule.js的文件。不需要添加.js扩展名。“另外,如果你看一下,他们似乎从
react
导入,但没有指定目录是的,但是JS在当前文件中寻找
sumfn
作为一个模块,而不是在当前目录中,这就是为什么你需要
/
。同样,我链接的指南说它将在“同一目录”中查找,不是同一个文件我找到了答案,看起来这些“裸”说明符在浏览器中还不受支持,但在WebPack/BabelJS中受支持,尽管它们遵循不同的约定,这就是为什么它如此令人困惑的原因。我在单独的答复中公布了全部细节