Jest не распознает мои пользовательские наборы - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть проект машинописного текста, для которого требуется личная библиотека, добавленная в мой package.json из репозитория git, созданного как библиотека commonjs.Когда я запускаю свой скрипт сборки ./node_modules/.bin/webpack -d --config webpack/webpack.dev.js, все компилируется правильно.Однако, когда я запускаю jest jest --config front/jest.config.js, он выдает следующую ошибку:

● Test suite failed to run
TypeError: dumblib_1.default is not a constructor

12 | const dumblib = new DumbLib(vars)

При входе в точку входа в lib, которая является просто проектом узла, скомпилированного из es6 в commonjs, пакет показывает это вконец файла:

module.exports = DumbLib;

В lib нет машинописного текста, поэтому у меня в главном проекте есть файл для набора текста для импорта dumblib.

declare module 'dumblib' {
  .
  .
  .

  export default class DumbLib {
    constructor(vars: Vars)
    .
    .
    .
  }

}

Как я уже сказал, кажется, что компилятор машинописного текста видит это, поскольку все компилируется правильно.Тем не менее, шутка продолжает бросать эту ошибку.Есть ли что-то особенное, что я должен сделать, чтобы шутка узнала мои печатные издания?Или есть какое-то другое несоответствие, которого я не вижу?

1 Ответ

0 голосов
/ 19 декабря 2018

Проблема в том, что фактический экспорт вашего модуля не совпадает с наборами.TypeScript ожидает экспорт «по умолчанию» из модуля из-за набора (вы говорите export default), но тогда внутри класса модуля находится весь экспорт.

Выполнение этих двух вещей должно помочь:

  1. При импорте модуля убедитесь, что он выглядит следующим образом:
import * as dumblib from "dumblib";
в вашем определении типа это должно быть:
declare module 'dumblib' {

  class DumbLib {
    // ...
  }

  namespace DumbLib {
    interface Foo {
      bar: string
    }
  }

  export = DumbLib
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...