节点-将笑话与esm软件包一起使用

A. *_*Lau 4 javascript jestjs

我想知道如何在节点后端结合带有笑话的esm软件包https://www.npmjs.com/package/esm

我尝试使用require("esm")require("esm")(module)在文件的最顶部设置安装文件,但这仍然给我SyntaxError: Unexpected token错误。

我以前会用过,node -r esm但开玩笑不支持这一点。

Jon*_*ogy 8

执行时require("esm")(module),请在创建esm-transformer函数时将其想到,该函数正在等待文件转换为ES模块。

这是我对带有节点v8 +的尝试:

  • 默认jest配置

  • 默认esm配置

在此处输入图片说明

utils-1.js:

export const add = (a, b) => a + b;
Run Code Online (Sandbox Code Playgroud)

utils-2.js:

export const multiAdd = array => array.reduce((sum, next) => sum + next, 0)
Run Code Online (Sandbox Code Playgroud)

_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);
  });
});
Run Code Online (Sandbox Code Playgroud)

_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);
  })
});
Run Code Online (Sandbox Code Playgroud)

_test_ / utils.test.js

const esmImport = require('esm')(module);
const utils_1 = esmImport('./utils-1.assert')
const utils_2 = esmImport('./utils-2.assert')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

希望这可以帮助!

  • 实际上,multiAdd可以简单地是array.reduce(add,0) (3认同)
  • 这对我来说比文档更有意义。 (2认同)
  • 什么?在此示例中,您甚至没有使用“esm”包。这是如何被接受的答案? (2认同)