使用 Create React App 和 TypeScript 进行 Jest 测试时的 isolatedModules 错误?

Posted

技术标签:

【中文标题】使用 Create React App 和 TypeScript 进行 Jest 测试时的 isolatedModules 错误?【英文标题】:isolatedModules error on Jest test with Create React App and TypeScript? 【发布时间】:2020-01-11 14:08:59 【问题描述】:

我已经使用 --typescript 启动了一个 Create React App 项目。当我写一个测试我得到一个编译器错误:

// something-test.tsx
test('something', ()=>
  expect(1).toBe(1)
)

错误是:

TS1208:如果提供了“--isolatedModules”标志,所有文件都必须是模块。

通过谷歌搜索,我认为解决方法是创建一个 jest.config.tsx:

module.exports = 
  roots: ["<rootDir>/src"],
  transform: 
    "^.+\\.tsx?$": "ts-jest"
  ,
  testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
  moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"]
;

然而这并没有什么不同。

【问题讨论】:

【参考方案1】:

您的代码中没有任何import 语句。这基本上意味着您没有测试测试文件之外的任何内容。

如果你测试了一些不在测试代码中的东西(因此导入了一些东西),测试文件将变成一个模块,错误就会消失?

【讨论】:

我试图从 tsconfig 中排除测试文件,但这更有意义,不要做不测试任何东西的测试,但如果你想制作一个测试文件只是为了测试测试正常,尝试导入一些随机模块,它会工作。 添加随机导入会使文件中有一个未使用的导入。

以上是关于使用 Create React App 和 TypeScript 进行 Jest 测试时的 isolatedModules 错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 React App 符号和名称或“使用 create-react-app 创建的网站”?

使用 'lodash-es' 和 create-react-app 减少捆绑包中的 Lodash

使用create-react-app搭建react应用

npm uninstall -g create-react-app 和 yarn global remove create-react-app 不起作用

create-react-app 和 jest - 不能在模块外使用 import 语句

为啥 create-react-app 会同时创建 App.js 和 index.js?