我在思考如何将 esm
包https://www.npmjs.com/package/esm 与 node 后端的 jest 集成。
我尝试使用require("esm")
和require("esm")(module)
在文件的最顶部设置一个安装文件,但仍然出现SyntaxError: Unexpected token
错误。
之前我可能会使用node -r esm
,但 jest 不支持这种方法。
我在思考如何将 esm
包https://www.npmjs.com/package/esm 与 node 后端的 jest 集成。
我尝试使用require("esm")
和require("esm")(module)
在文件的最顶部设置一个安装文件,但仍然出现SyntaxError: Unexpected token
错误。
之前我可能会使用node -r esm
,但 jest 不支持这种方法。
require("esm")(module)
时,可以将其视为创建一个待转换为ES模块的esm-transformer函数。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')
希望这有所帮助!如果有人仍在寻找答案,接受的答案确实需要一些努力。
您还可以使用esm
包与jest
一起使用,通过使用jest-esm-transformer-2
(或jest-esm-transformer
,如果您使用的是jest
<28)将esm文件转换回cjs。
npm i jest-esm-transformer-2 --save-dev
jest.config.js
并配置代码转换以使用jest-esm-transformer-2
const config = {
transform: {
'.js': 'jest-esm-transformer-2'
}
}
module.exports = config
jest
。
array.reduce(add,0)
。 - Jason J. Nathanconst originalJest = jest; const esmImport = require('esm')(module); global.jest = originalJest
- Stradivariuzesm
包。这怎么能成为一个被接受的答案呢? - Andrew Kosterconst esmImport = require('esm')(module);
- Lee Goddard