2

我正在使用 StencilJS 编写一个 Web 组件。我的组件导入的辅助类 ( ArrayHelper.ts) 之一在顶部有这些导入:

import transform from 'lodash/transform';
import isEmpty from 'lodash/isEmpty';
import isEqual from 'lodash/isEqual';
import isObject from 'lodash/isObject';

在本地编译和服务时,这一切都很好。但是,当编写一些单元测试并使用 jest 执行它们时,jest 无法正确解析这些导入:

TypeError: isObject_1.default is not a function at Function.Object. 
<anonymous>.ArrayHelper.toArray (/mycomponent/ArrayHelper.ts:15:35)

当我将导入更改ArrayHelper.ts

import { isEmpty, isEqual, isObject, transform } from 'lodash';

然后 Jest 将成功运行测试而不会出现问题,但是 stencilJS 的 TS 编译不再起作用:

Missing Export: mycomponents/ArrayHelper.js:5:27
'isObject' is not exported by node_modules/lodash/lodash.js

任何想法如何让这些进口适合这两种情况?

4

2 回答 2

1

尝试像这样导入 lodash

import * as _ from "lodash";
于 2020-06-11T07:11:58.660 回答
0

尝试将此添加到您的 stencil.config.js:

nodeResolve: {
  browser: true
}

发生这种情况是因为 lodash 在 Jest 运行测试的地方不可用。它是一种实验性的浏览器技术。

参考 - Link1 Link2

于 2018-09-06T06:42:49.880 回答