我有一个 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"
],
我尝试过:
有什么想法出了什么问题以及如何尝试解决这个问题吗?
某些包可能不包含自己的类型定义。出现此错误的原因是:
您正在使用 typescript,编译器无法在
node_modules
中的包文件夹或任何指定的 类型根中找到类型定义文件。
Jest 具有由 DefinitelyTyped 提供的类型定义。您可以通过运行以下命令来安装它们:
yarn -D add @types/jest
npm install @types/jest --save-dev
正如您所看到的,上述两个命令都将此依赖项保存为开发依赖项,这意味着该代码将不会包含在您的生产包中。这对于打字稿类型来说是最佳的,因为无论如何你的代码都会被编译为 JS。
如果您遇到不包含自己的类型定义的包,并且在 DefinitelyTyped 存储库中没有为其创建定义,您始终可以在
.d.ts
文件中为包定义自己的类型,如下所示:
declare module "my-module" {
// ... type the contents of the package, like functions etc.
}
如果您为尚未键入的包创建自定义类型定义,请考虑贡献到DefinitelyTyped存储库,以便其他人也可以从您的类型中受益。