如何让TS-Node识别vite-env.d.ts中的类型定义?
解决TS-Node无法识别vite-env.d.ts类型的问题
核心原因
测试用的TypeScript配置未包含src/vite-env.d.ts,导致TS-Node编译时找不到其中定义的类型。以下是几个直接有效的解决办法:
方法1:更新测试用tsconfig的包含范围
修改test/tsconfig.json,让配置覆盖src目录的类型文件和业务代码,确保TS-Node能读取到全局类型定义:
{ "compilerOptions": { "target": "ESNext", "module": "ESNext", "moduleResolution": "NodeNext", "esModuleInterop": true }, "include": [ "../src/**/*.d.ts", "../src/ts/**/*.ts", "./**/*.spec.ts" ], "ts-node": { "esm": true, "files": true } }
方法2:将类型声明为全局可用(可选)
如果希望MyCustomType在所有文件中直接使用、无需单独导入,修改src/vite-env.d.ts:
/// <reference types='vite/client' /> declare global { type MyCustomType = { start: string, end: string }; } // 必须添加此行,确保全局声明生效 export {};
方法3:明确Mocha的TS配置路径
在test/.mocharc.json中指定测试用的tsconfig路径,避免TS-Node误加载其他配置:
{ "loader": "ts-node/esm", "extensions": ["ts"], "spec": ["test/**/*.spec.ts"], "watch-files": ["src/vite-env.d.ts", "src/ts/*.ts", "test/**/*.spec.ts"], "experimental-json-modules": true, "ts-node": { "project": "./test/tsconfig.json" } }
验证步骤
先执行ts-node --project test/tsconfig.json src/ts/myModule.ts检查是否还存在类型错误,确认配置生效后再运行npm test。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

