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

为何ts-morph无法获取TypeScript项目中的类?

解决ts-morph无法获取AntV X6类的问题

常见原因及修复方案

1. 未明确指定要加载的文件类型

ts-morph默认仅识别.ts/.tsx文件,但如果未配置include规则,可能无法扫描到目标目录下的所有源码文件。可以通过添加目录时指定匹配规则解决:

import { Project } from "ts-morph";

const project = new Project();

project.addDirectoryAtPath("/Users/john/github_repo/@antv/X6/packages/", {
  include: ["**/*.ts", "**/*.tsx"], // 明确包含所有TS/TSX源码文件
  exclude: ["**/*.d.ts", "**/node_modules/**"] // 排除类型声明文件和依赖目录
});

const classes = project.getSourceFiles().flatMap(sourceFile => sourceFile.getClasses());
console.log("classes: ", classes);

2. 未结合项目的tsconfig.json初始化

直接添加目录可能无法正确解析项目的源码结构,建议使用X6根目录的tsconfig初始化项目,ts-morph会自动读取配置中的文件包含规则:

import { Project } from "ts-morph";

// 用X6项目的tsconfig初始化,自动加载配置内的所有源码文件
const project = new Project({
  tsConfigFilePath: "/Users/john/github_repo/@antv/X6/tsconfig.json"
});

const classes = project.getSourceFiles().flatMap(sourceFile => sourceFile.getClasses());
console.log("classes: ", classes);

3. 路径大小写或路径错误

检查目标路径是否准确,比如系统是大小写敏感的(如macOS/Linux),需确认@antv/X6是否和实际目录的大小写一致(比如实际是@antv/x6)。

4. 未触发源码文件解析

如果目录下文件较多,可手动调用resolveSourceFiles()确保所有文件被加载解析:

project.addDirectoryAtPath("/Users/john/github_repo/@antv/X6/packages/");
project.resolveSourceFiles(); // 强制解析所有匹配的源文件

const classes = project.getSourceFiles().flatMap(sourceFile => sourceFile.getClasses());
console.log("classes: ", classes);

验证步骤

先确认是否加载到了源文件,排查路径或规则问题:

const sourceFiles = project.getSourceFiles();
console.log("加载的源文件数量:", sourceFiles.length);
// 若数量为0,说明路径或include规则配置错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:04:57