首页 > 解决方案 > flatMap 在纱线测试 javascript 中不起作用

问题描述

我在我的组件方法中有一些代码,使用flatMap. 该代码在浏览器中flatMap运行良好,但在使用yarn test. 有没有人见过这样的东西?

● Click Events › should copy table data

TypeError: children.map(...).flatMap is not a function

  181 |     const dataKeys = children
  182 |       .map(({ $: { data: dataKey } }) => dataKey)
> 183 |       .flatMap(k => k.split(LEVEL_DELIMITER));
      |        ^

编辑 - 可重现的示例:创建了一个 CRA 基础并添加了这个简单的测试:

it('can flatMap', () => {
    [1, 2, 3, 4].flatMap(x => [x * 2]);
});

得到同样的错误:

 FAIL  src/App.test.js
● can flatMap

TypeError: [1,2,3,4].flatMap is not a function

  at Object.<anonymous>.it (src/App.test.js:12:16)
      at new Promise (<anonymous>)
  at Promise.resolve.then.el (node_modules/p-map/index.js:46:16)
      at <anonymous>
  at process._tickCallback (internal/process/next_tick.js:188:7)

✓ renders without crashing (4ms)
✕ can flatMap

标签: javascriptreactjsunit-testingecmascript-6yarnpkg

解决方案


我的一个同事找到了解决方案。Node.js显然flatMap不支持:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap#Browser_compatibility


flatMap现在在节点 11+ 中得到支持,如下所述,请参见相同的链接。


推荐阅读