gpt4 book ai didi

node.js - Node v13/Jest/ES6 — 原生支持没有 babel 或 esm 的模块

转载 作者:行者123 更新时间:2023-12-03 12:09:28 25 4
gpt4 key购买 nike

是否可以在没有 esm 的情况下使用 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

当 babel 添加一个转译器时,它可以工作,但是 es6 模块也可以原生使用吗?

最佳答案

是的,可以从 jest@25.4.0 .从这个版本开始,有对 esm 的原生支持,所以你不必再用 babel 转译你的代码了。

它尚未记录,但根据 this issue您必须执行 3 个简单的步骤才能实现这一目标(在撰写此答案时):

  • 确保你不会变身 import通过设置 transform: {} 声明在你的 Jest 配置文件中
  • 运行node@^12.16.0 || >=13.2.0--experimental-vm-modules旗帜
  • 使用 jest-environment-node 运行测试或 jest-environment-jsdom-sixteen .

  • 所以你的 Jest 配置文件应该至少包含这个:
    export default {
    testEnvironment: 'jest-environment-node',
    transform: {}
    ...
    };

    并设置 --experimental-vm-modules标志,您必须从 package.json 运行 Jest如下(我希望将来会改变):
    "scripts": {
    "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
    }

    我希望,这个答案对你有帮助。

    关于node.js - Node v13/Jest/ES6 — 原生支持没有 babel 或 esm 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60372790/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com