导入第三方非TS模块时,玩笑失败

时间:2019-08-16 14:32:08

标签: typescript jestjs create-react-app es6-modules react-scripts

我正在使用内部的第三方设计系统库,我们将其称为(3DS)来渲染组件。 3DS库不支持Typescript,即。没有.d.ts文件。我们正在项目中使用TS。

我发现了一种通过禁用一行TS来导入3DS的方法。

//@ts-ignore import { BrandProvider } from "@3ds/components";

此技术在浏览器中可以正常工作。一切加载完毕,我可以在视图中看到用过的组件。

但是,当我使用Jest运行测试时,出现以下错误。

Cannot find module '@3ds/components' from App.tsx

所以我更新了导入以使用绝对路径来查看会发生什么。

import { BrandProvider } from '../node_modules/@3ds/components/esm';

哪个给我这个错误。

est encountered an unexpected token

This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

Here's what you can do:
To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
If you need a custom transformation specify a "transform" option in your config.
If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

那更好,因为它指向我使用transformIgnorePatterns,我相信它将忽略程序包的转换,好极了!

所以我将此添加到package.json的jest配置中

"transformIgnorePatterns" : ["node_modules/@3ds"]

现在可以承认我可以处理数组中的值了,但是没关系,react-scripts不支持此配置,这就是证据。

These options in your package.json Jest configuration are not currently supported by Create React App: transformIgnorePatterns

据我所知,我被困住了。 已更新,更新为react-scripts: 3.1.1后,我就可以使用transformIgnorePatterns

但是加载JEST

还是出错

我需要什么 我需要Jest / React脚本才能将非TS模块导入项目并运行测试。或者至少是一种配置Jest的方法。

0 个答案:

没有答案