Еще одна ошибка «TypeError: XXX.default не является конструктором»

Я определяю класс в одном файле 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.

Что я делаю не так?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
698
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме