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

问题描述 投票:0回答:1

我有一个 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 存储库从 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 小时谷歌搜索

有什么想法出了什么问题以及如何尝试解决这个问题吗?

typescript next.js jestjs tsconfig nx-monorepo
1个回答
1
投票

某些包可能不包含自己的类型定义。出现此错误的原因是:

您正在使用 typescript,编译器无法在

node_modules
中的包文件夹或任何指定的 类型根中找到类型定义文件。


Jest 具有由 DefinitelyTyped 提供的类型定义。您可以通过运行以下命令来安装它们:

使用纱线

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存储库,以便其他人也可以从您的类型中受益。

© www.soinside.com 2019 - 2024. All rights reserved.