node -使用jest和esm包

nbysray5  于 2023-03-27  发布在  Jest
关注(0)|答案(2)|浏览(197)

我想知道如何将esmhttps://www.npmjs.com/package/esm与jest合并到节点后端。
我尝试在文件的最顶部设置一个require("esm")require("esm")(module)的安装文件,但它仍然给我SyntaxError: Unexpected token错误。
我以前会使用node -r esm,但jest不支持这个。

goucqfw6

goucqfw61#

当执行require("esm")(module)时,可以将其视为正在创建一个esm-transformer函数,该函数正在挂起一个要转换为ES模块的文件。
下面是我对node v8+的尝试:

  • 默认jest配置
  • 默认esm配置

utils-1.js:

export const add = (a, b) => a + b;

utils-2.js:

export const multiAdd = array => array.reduce((sum, next) => sum + next, 0)

test/utils-1.assert.js

import { add } from '../utils-1';

describe('add(a,b)', () => {
  it('should return the addtion of its two inputs', () => {
    expect(add(1,2)).toBe(3);
  });
});

test/utils-2.assert.js

import { multiAdd } from '../utils-2';

describe('multiAdd(<Number[]>)', () => {
  it('should return a summation of all array elements', () => {
    expect(multiAdd([1,2,3,4])).toBe(10);
  })
});

test/utils.test.js

const esmImport = require('esm')(module);
const utils_1 = esmImport('./utils-1.assert')
const utils_2 = esmImport('./utils-2.assert')

希望这有帮助!

vx6bjr1n

vx6bjr1n2#

如果有人还在寻找,公认的答案确实需要一点努力。
您还可以将esm包与jest一起使用,方法是使用jest-esm-transformer-2(如果您使用的是jest〈28,则使用jest-esm-transformer)将esm文件转换回cjs。
1.安装软件包npm i jest-esm-transformer-2 --save-dev
1.在根目录中创建jest.config.js并配置代码转换以使用jest-esm-transformer-2

const config = {
  transform: {
    '.js': 'jest-esm-transformer-2'
  }
}

module.exports = config

1.运行jest,不带标志等。

相关问题