找不到“jest”的类型定义文件,即使安装了jest [已关闭]

q3aa0525  于 2023-08-01  发布在  Jest
关注(0)|答案(1)|浏览(673)

**已关闭。**此问题需要debugging details。它目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答这个问题。
13天前关闭
Improve this question
我有一个nx仓库,里面有一个NextJs应用程序,它的tsconfig.json有这个错误:

Cannot find type definition file for 'jest'.
  The file is in the program because:
    Entry point of type library 'jest' specified in compilerOptions

字符串
据我所知,这个问题过去只是一个警告,但是在将nx repository从16.3.2迁移到16.5.2之后,这现在导致了一个构建错误。
我已经安装了这些devDeps:

"@nx/jest": "16.5.2",
"@types/jest": "^29.4.4",
"babel-jest": "29.4.3",
"jest": "29.4.3",
"jest-environment-jsdom": "29.4.3",
"ts-jest": "29.1.0",


tsconfig.json有:

"types": [
      "node",
      "jest"
    ],


我试过:

  • 删除node_modules和.next文件夹,关闭VSCode后重新安装模块,并杀死所有可能仍在运行的隐藏进程
  • 2小时google

任何想法是什么错了,如何尝试和解决这个问题?

li9yvcax

li9yvcax1#

某些包可能不包含它们自己的类型定义。发生此错误的原因是:
您正在使用typescript,编译器在node_modules的包文件夹或任何指定的类型根目录中找不到类型定义文件。
Jest有DefinitelyTyped提供的类型定义。您可以通过运行以下命令来安装它们:

使用Yarn

yarn -D add @types/jest

字符串

使用NPM

npm install @types/jest --save-dev


正如您所看到的,上述两个命令都将此依赖项保存为开发依赖项,这意味着代码将不会包含在您的生产包中。这对于类型脚本类型是最佳的,因为你的代码无论如何都会被编译成JS。

找不到包的类型怎么办?

如果你遇到的包不包含自己的类型定义,并且在DefinitelyTyped存储库中没有为它创建定义,你可以在.d.ts文件中为包定义自己的类型,如下所示:

declare module "my-module" {
  // ... type the contents of the package, like functions etc.
}


如果您为尚未类型化的包创建自定义类型定义,请考虑为DefinitelyTyped存储库做贡献,以便其他人也可以从您的类型中受益。

相关问题