Cypress 测试无法识别 node_modules 包类型
Cypress tests not recognizing node_modules package types
我的 (Typescript) 应用程序在 Cypress 测试中遇到问题,无法识别我安装的包的类型。这是我的顶级目录结构:
cypress
node_modules
src
我的 cypress/tsconfig.json
文件如下所示:
{
"compilerOptions": {
"strict": true,
"baseUrl": "../node_modules",
"paths": {
"~/*": ["../src/*"]
},
"jsx": "react",
"target": "es6",
"lib": ["es6", "dom", "es2017.string"],
"types": ["cypress"]
},
"include": ["**/*.ts"]
}
在我的一个规范文件中,我有以下导入:
import * as faker from 'faker';
import { DeepPartial } from 'utility-types';
faker
的类型在 DefinitelyTypes (@types/faker
) 中定义,而 utility-types
的类型作为 *.d.ts
文件包含在该包中。 faker
导入没有问题,但是 utility-types
导入给出了 找不到模块 'utility-types' 或其相应的类型声明。 错误。
我已尝试将 node_modules 目录中的 *.d.ts
文件明确包含到 compilerOptions.types
、compilerOptions.typeRoots
和 [=] 下的 tsconfig.json
文件中26=] 属性,但无济于事。
我还创建了如下所示的“假”(?) 类型,以便编译:
declare module 'utility-types' {
export type DeepPartial<T> = {};
}
这允许应用程序编译,并且在 运行 时,包已解析,因此看起来问题在于查找类型,而不是模块本身。
为什么 Cypress 找不到这些包的类型?
您可以尝试将moduleResolution
设置为node
https://www.typescriptlang.org/docs/handbook/module-resolution.html#module-resolution-strategies
我已尝试使用此配置导入 utility-types
:导入有效,并正确测试 运行
{
"compilerOptions": {
"strict": true,
"baseUrl": "../node_modules",
"paths": {
"~/*": ["../src/*"]
},
"jsx": "react",
"target": "es6",
"lib": ["es6", "dom", "es2017.string"],
"types": ["cypress"],
"moduleResolution": "node"
},
"include": ["**/*.ts"]
}
我的 (Typescript) 应用程序在 Cypress 测试中遇到问题,无法识别我安装的包的类型。这是我的顶级目录结构:
cypress
node_modules
src
我的 cypress/tsconfig.json
文件如下所示:
{
"compilerOptions": {
"strict": true,
"baseUrl": "../node_modules",
"paths": {
"~/*": ["../src/*"]
},
"jsx": "react",
"target": "es6",
"lib": ["es6", "dom", "es2017.string"],
"types": ["cypress"]
},
"include": ["**/*.ts"]
}
在我的一个规范文件中,我有以下导入:
import * as faker from 'faker';
import { DeepPartial } from 'utility-types';
faker
的类型在 DefinitelyTypes (@types/faker
) 中定义,而 utility-types
的类型作为 *.d.ts
文件包含在该包中。 faker
导入没有问题,但是 utility-types
导入给出了 找不到模块 'utility-types' 或其相应的类型声明。 错误。
我已尝试将 node_modules 目录中的 *.d.ts
文件明确包含到 compilerOptions.types
、compilerOptions.typeRoots
和 [=] 下的 tsconfig.json
文件中26=] 属性,但无济于事。
我还创建了如下所示的“假”(?) 类型,以便编译:
declare module 'utility-types' {
export type DeepPartial<T> = {};
}
这允许应用程序编译,并且在 运行 时,包已解析,因此看起来问题在于查找类型,而不是模块本身。
为什么 Cypress 找不到这些包的类型?
您可以尝试将moduleResolution
设置为node
https://www.typescriptlang.org/docs/handbook/module-resolution.html#module-resolution-strategies
我已尝试使用此配置导入 utility-types
:导入有效,并正确测试 运行
{
"compilerOptions": {
"strict": true,
"baseUrl": "../node_modules",
"paths": {
"~/*": ["../src/*"]
},
"jsx": "react",
"target": "es6",
"lib": ["es6", "dom", "es2017.string"],
"types": ["cypress"],
"moduleResolution": "node"
},
"include": ["**/*.ts"]
}