Невозможно использовать класс typescript из другого локального модуля typescript с помощью браузера

У меня есть общий модуль npm, содержащий TypeScript, который является модулем узла, предоставляющим некоторые классы и функциональные возможности. Этот модуль упаковывается через browserify + tsify, а также экспортирует файлы объявлений и собирается с помощью gulp.

У меня есть еще один модуль npm, использующий TypeScript, который локально импортирует этот модуль через file:../modulename и пытается использовать функциональность из первого модуля. Второй модуль также упакован через browserify + tsify и собран с помощью gulp. Компиляция второго модуля работает через npx tsc, но не работает, если я запускаю файл сборки gulp с сообщением об ошибке

Error: Cannot find module './AbstractClass' from 'folderInOtherModuleContainingTheJSFiles'

Интересно, что иногда он терпит неудачу с этим классом, иногда с другим, так что кажется, что есть какая-то параллельная обработка.

Я извлек сбойный код из своего проекта и создал минимальный пример с таким поведением здесь.

npm version: 5.6.0 node version: v9.5.0


person Sheldan    schedule 13.03.2018    source источник


Ответы (1)


Для всех, кто может прийти на этот пост и столкнуться с той же ошибкой.

Я также открыл issue на tsify, думая, что это как-то связано с плагином, потому что npx tsc сработало.

К счастью, проблема была решена, хотя и с обходным путем. Похоже, что существует конфликт имен, который заставляет browserify думать, что вызов require, который является переменной, в результирующем пакете должен быть разрешен, но не может. Обходной путь заключается в искажении полученного пакета, чтобы не возникало конфликта. Более подробная информация в вышеупомянутой связанной проблеме.

person Sheldan    schedule 15.03.2018