我正在尝试遵循Jest 入门指南,但使用 ES6 模块和 Babel。我的根文件夹有两个 javascript 文件sumfn.js
和sum.test.js
. 我的sum.test.js
文件看起来像这样:
import { sum } from 'sumfn';
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(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'].
如果我将导入行更改为 use ./sumfn
,它会起作用。但是,从我读到的有关 ES6 导入的信息来看,它似乎应该能够在同一目录中找到文件。这可能在 Jest 中不支持吗?
所以我感到困惑的主要原因之一是因为那里有很多过时的 ES6 模块指南。事实上,谷歌上的许多热门搜索结果似乎已经过时。我一直在寻找像导游这个,这个和这个,他们都表示,你可以从一个模块名称导入,而不指定路径,例如
import { double } from 'mymodule';
这些被称为“裸”导入说明符,指南说默认情况下它将在当前目录中搜索匹配的模块。但是,现在似乎浏览器不支持它们。
地方变得极为混乱的是,他们都在BabelJS和支持的WebPack,但它遵循不同的约定。例如,Webpack 搜索 中指定resolve.modules
的路径,默认情况下包括node_modules
文件夹。这就是Create-React-App 示例可以使用类似语句的原因
import React from 'react';
似乎未来的计划是让环境决定如何解决这些“裸”说明符(Source)。让每个环境以不同的方式解析这些说明符似乎很危险,这可能会使制作交叉兼容的模块变得困难,但我想这是目前的计划。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句