You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript项目存在多个独立tsconfig时测试文件如何导入源码文件?

具体修改方案

你已经添加的references配置是正确的,只需要在test/tsconfig.json的compilerOptions中补充路径映射规则即可实现需求:

{
  "compilerOptions": {
    "module": "commonjs",
    "outDir": "../libtest",
    "strict": false,
    "composite": true,
    "sourceMap": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    // 新增以下配置
    "baseUrl": ".",
    "paths": {
      "./*": [
        "../src/*",
        "./*"
      ]
    }
  },
  "include": [
    "**/*.ts"
  ],
  // 保留你之前添加的src项目引用
  "references": [
    {
      "path": "../src"
    }
  ]
}

配置说明

  • baseUrl设为test目录作为所有相对导入的基准路径
  • paths规则会将当前目录下的相对导入请求,优先匹配src目录下的对应文件,再匹配test目录下的文件,刚好符合你写的import { Downloader } from "./downloader"的导入逻辑,直接定位到src/downloader.ts源码文件
  • references配置保证TypeScript增量编译时,src代码修改后会自动同步更新测试编译依赖,不会读取旧的编译产物

如果运行测试时(比如用jest、mocha、ts-node等工具)仍然提示模块不存在,需要同步给运行工具配置对应的路径映射规则:

  • 若使用jest,在jest.config.js中添加:
module.exports = {
  moduleNameMapper: {
    '^./(.*)$': ['<rootDir>/src/$1', '<rootDir>/test/$1']
  }
}
  • 若使用ts-node直接运行测试,启动命令添加--tsconfig test/tsconfig.json参数,或安装tsconfig-paths插件加载tsconfig的路径配置。

内容的提问来源于stack exchange,提问作者Daniel Kaplan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:36:02