我正在使用内部的第三方设计系统库,我们将其称为(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的方法。