Интеграция сгенерированного пакета ng-packagr с приложением Angular CLI: модуль не найден

Вот репо, которое воспроизводит это: https://github.com/dragonflypl/ng-packagr-issue

  1. Я создал простой пакет logging. npm run build генерирует библиотеку + делает npm pack
  2. Затем я сгенерировал fooGui с помощью Angular CLI и установил библиотеку через npm run consume, которая устанавливает tgz.
  3. Запуск npm run build из fooGui выдает:

ОШИБКА в ./src/app/app.component.ngfactory.js Модуль не найден: Ошибка: не удается разрешить 'logging / src / modules / logging / logger / index' в 'C: \ XXX \ dev \ ng-packagr -issue \ fooGui \ src \ app 'resolve' logging / src / modules / logging / logger / index 'в' C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ src \ app 'Анализируемый запрос - это модуль, использующий файл описания: C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ package.json (относительный путь: ./src/app) Поле 'browser' не содержит допустимой конфигурации псевдонима после использования файла описания: C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ package.json (относительный путь: ./src/app) разрешается как модуль C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ src \ app \ node_modules не каталог не существует или не является каталогом C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ src \ node_modules не существует или не является каталогом C: \ XXX \ dev \ ng-packagr-issue \ node_modules не не существует или не является каталогом C: \ XXX \ dev \ node_modules не существует или не является каталогом C: \ XXX \ node_modules doe s не существует или не является каталогом C: \ node_modules не существует или не является каталогом для поиска модулей в C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ node_modules с использованием файла описания: C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ package.json (относительный путь: ./node_modules) Поле 'browser' не содержит допустимой конфигурации псевдонима после использования файла описания: C: \ XXX \ dev \ ng-packagr- issue \ fooGui \ package.json (относительный путь: ./node_modules) с использованием файла описания: C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ node_modules \ logging \ package.json (относительный путь: ./src/modules / logging / logger / index) без расширения Поле 'browser' не содержит допустимой конфигурации псевдонима C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ node_modules \ logging \ src \ modules \ logging \ logger \ index не 't exists .ts Поле' browser 'не содержит допустимой конфигурации псевдонима C: \ XXX \ dev \ ng-packagr-iss ue \ fooGui \ node_modules \ logging \ src \ modules \ logging \ logger \ index.ts не существует .js Поле 'browser' не содержит допустимой конфигурации псевдонима C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ node_modules \ logging \ src \ modules \ logging \ logger \ index.js не существует как каталог C: \ XXX \ dev \ ng-packagr-issue \ fooGui \ node_modules \ logging \ src \ modules \ logging \ logger \ индекс не существует

Есть идеи, что я сделал не так, или это где-то ошибка?


person dragonfly    schedule 19.01.2018    source источник
comment
Вместо "logging": "file:../logging/dist/logging-1.0.0-rc.1.tgz", используйте функцию связывания / отмены связи npm или опубликуйте логирование в npm. Я не говорю, что это проблема, но видел, как инструменты сборки сталкиваются с проблемами с file: репозиториями.   -  person bhantol    schedule 19.01.2018
comment
Кстати, вот еще один, который я написал npmjs.com/package/ngx-library-builder, который делает то же самое, что и ng-packager, но вам следует открыть проблему на этом сайте и попытаться исправить ее. Если у вас возникнут проблемы с npmjs.com/package/ngx-library-builder Я могу помочь.   -  person bhantol    schedule 19.01.2018
comment
То же самое происходит с исходными пакетами, опубликованными и установленными через npm, но спасибо   -  person dragonfly    schedule 22.01.2018
comment
@bhantol - не могли бы вы взглянуть на мой ответ, я исправил, но не знаю, почему он работает :)   -  person dragonfly    schedule 25.01.2018


Ответы (1)


Я нашел виновника: в общедоступном файле api у меня есть:

export * from './src/modules/logging/logger';

который обращается к index.ts.

Когда я заменил его явным, он явным экспортом:

export * from './src/modules/logging/logger/logger.service';
export * from './src/modules/logging/logger/log-level.enum';

тогда это работает. Но теперь вопрос: есть идеи, почему? Потому что я не знаю.

person dragonfly    schedule 25.01.2018
comment
Это (крайне неприятная) проблема с компилятором Angular, с которой я столкнулся только при использовании ng-packagr. Импорт бочек не поддерживается, дополнительную информацию см. здесь. - person fotijr; 02.10.2019