是否可以使用 Jest 测试 ES6 模块而无需esm
or babel
? Since node v13
原生支持es6已经尝试过:
//package.json
{
…
"type": "module"
…
}
//__tests__/a.js
import Foo from '../src/Foo.js';
$ npx jest
Jest encountered an unexpected token
…
Details:
/home/node/xxx/__tests__/a.js:1
import Foo from '../src/Foo.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
当 babel 添加转译器后,它可以工作,但是 es6 模块也可以原生使用吗?
是的,可以从[email protected] /cdn-cgi/l/email-protection
。从这个版本开始,原生支持 esm,因此您不必再使用 babel 转译代码。
目前还没有记录,但根据这个问题 https://github.com/facebook/jest/issues/9430您必须执行 3 个简单步骤才能实现这一目标(在写这个答案时):
- 确保你不会变身
import
通过设置语句transform: {}
在你的笑话配置文件中
- Run
node@^12.16.0 || >=13.2.0
with --experimental-vm-modules
flag
- 运行你的测试
jest-environment-node
or jest-environment-jsdom-sixteen
.
所以你的笑话配置文件应该至少包含以下内容:
export default {
testEnvironment: 'jest-environment-node',
transform: {}
...
};
并设置--experimental-vm-modules
标志,你必须运行 Jestpackage.json
如下 (我希望这在未来会改变):
"scripts": {
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
}
我希望,这个答案对您有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)