phi*_*ipp 25 node.js ecmascript-6 jestjs
是否可以在不使用esm
或不使用 Jest 的情况下使用 Jest 测试 ES6 模块babel
?由于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
Run Code Online (Sandbox Code Playgroud)
当 babel 添加一个转译器时,它可以工作,但是 es6 模块也可以在本地使用吗?
Rad*_*uka 21
是的,可以从jest@25.4.0
. 从这个版本开始,有一个对 esm 的原生支持,所以你不必再用 babel 转译你的代码。
它尚未记录在案,但根据此问题,您必须执行 3 个简单的步骤来实现这一点(在撰写此答案时):
import
通过transform: {}
在 jest 配置文件中设置来转换语句node@^12.16.0 || >=13.2.0
带--experimental-vm-modules
旗奔跑jest-environment-node
或运行您的测试jest-environment-jsdom-sixteen
。所以你的笑话配置文件应该至少包含这个:
export default {
testEnvironment: 'jest-environment-node',
transform: {}
...
};
Run Code Online (Sandbox Code Playgroud)
要设置--experimental-vm-modules
标志,您必须package.json
按如下方式运行 Jest (我希望将来会改变):
"scripts": {
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
}
Run Code Online (Sandbox Code Playgroud)
我希望,这个答案对你有帮助。
请注意,这仍然是实验性的,但我们已经记录了如何测试它,因此希望减少混乱。
https://jestjs.io/docs/en/ecmascript-modules
/sf/answers/4315717311/中的步骤是正确的
归档时间: |
|
查看次数: |
7219 次 |
最近记录: |