Я определяю класс в одном файле TypeScript и хочу создать его экземпляр в другом, но получаю сообщение об ошибке TypeError: skillService_1.default is not a constructor.
Я прочитал много связанных вопросов о переполнении стека, но ни один из них не решил мою проблему. Я подозревал циклическую зависимость, но проверил свой код с помощью Мэдж, и ее нет. Также во многих сообщениях рекомендовался default export, но это не решило мою проблему.
skillService.ts:
import ProgLangModel from '../models/progLang/progLangModel'
import { GitLabDiff, getGitLabFolders } from './versionControlService'
import isInPackageExclusionList from '../config/packageExclusion'
import { Gitlab } from '@gitbeaker/core'
const similarity = require('../utils/stringSimilarity');
export default class TreeNode {
private _name: string | null
private _parent: TreeNode | null
private _score: number | null
private _progLangId: number | null
private _children: TreeNode[]
constructor(_name: string | null, _parent: TreeNode | null, _score: number | null, _progLangId: number | null) {
this._name = _name;
this._score = _score;
this._children = [];
this._parent = _parent;
if (_parent)
this._parent!.addToChildren(this)
this._progLangId = _progLangId;
}
hasPackage(packageName: string): boolean {
return this._children?.find(e => e._name === packageName) ? true : false;
}
...
extractionService.ts:
import TreeNode, { populateSkillsFromContent, calculateCumulatedScore } from './skillService'
import log from '../models/progressLog/progressLogDataService'
import saveExtraction from '../models/extraction/extractionDataService'
import { getGitLabProjects, getGitLabCommits, getGitLabDiffList, getGitLabContentByCommitId, GitLabDiff } from './versionControlService'
import updateSkillTree from '../models/skill/skillDataService'
import saveProject from '../models/project/projectDataService'
import createGitLabApi from '../config/initGitLabApi'
import { Gitlab } from '@gitbeaker/core'
import { GitLabProjectType } from './versionControlService'
const start = async (repoId: number, branches: {}, path: string, progLangs: number[]) => {
...
let skillTree: TreeNode = new TreeNode(null, null, null, null)
...
Я еще не пробовал свое приложение (я нахожусь на ранней стадии), ошибка возникает, когда я запускаю тест с помощью Jest:
RUNS services/extractionService.test.ts
Waiting for the debugger to disconnect...
/home/ubuntu/work/skillhunter/server/services/extractionService.ts:2415
(cov_2dfwuq4qdi().s[55]++, new skillService_1.default(null, null, null, null));
^
TypeError: skillService_1.default is not a constructor
at /home/ubuntu/work/skillhunter/server/services/extractionService.ts:2415:34
at Generator.next (<anonymous>)
at fulfilled (/home/ubuntu/work/skillhunter/server/services/extractionService.ts:2291:24)
Node.js v20.9.0
В тесте я не имею в виду TreeNode.
Что я делаю не так?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Моя проблема заключалась в том, что мой класс TreeNode находился в файле с другими функциями, которые использовали этот класс. Как только класс был перенесен в отдельный файл, эта ошибка исчезла.