Несколько Angular библиотек не работают в производственном режиме - PullRequest
0 голосов
/ 27 мая 2020

Я создал проект Angular, состоящий из двух Angular библиотек. Вы можете найти исходный код здесь . После этого я собрал eaсh-библиотеку и поделился полученной папкой dist через npm. Вот пакет: https://www.npmjs.com/package/@agilie / angular -helpies .

После этого я пытаюсь использовать перехватчик из этой библиотеки и импортировать его вот так

import {DuplicateRequestFilter} from '@agilie/angular-helpies/interceptors';

В режиме разработки все работает правильно, однако, когда я пытаюсь собрать проект в производственном режиме, я получаю сообщение об ошибке

ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'interceptors' in '/Users/sergey/libs/test-helpies/src/app'
resolve 'interceptors' in '/Users/sergey/libs/test-helpies/src/app'
  Parsed request is a module
  using description file: /Users/sergey/libs/test-helpies/package.json (relative path: ./src/app)
    Field 'browser' doesn't contain a valid alias configuration
    resolve as module
      looking for modules in /Users/sergey/libs/test-helpies/
        using description file: /Users/sergey/libs/test-helpies/package.json (relative path: .)
          Field 'browser' doesn't contain a valid alias configuration
          using description file: /Users/sergey/libs/test-helpies/package.json (relative path: ./interceptors)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/interceptors doesn't exist
            .ts
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/interceptors.ts doesn't exist
            .tsx
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/interceptors.tsx doesn't exist
            .mjs
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/interceptors.mjs doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/interceptors.js doesn't exist
            as directory
              /Users/sergey/libs/test-helpies/interceptors doesn't exist
      /Users/sergey/libs/test-helpies/src/app/node_modules doesn't exist or is not a directory
      /Users/sergey/libs/test-helpies/src/node_modules doesn't exist or is not a directory
      /Users/sergey/libs/node_modules doesn't exist or is not a directory
      /Users/sergey/node_modules doesn't exist or is not a directory
      /Users/node_modules doesn't exist or is not a directory
      /node_modules doesn't exist or is not a directory
      looking for modules in /Users/sergey/libs/test-helpies/node_modules
        using description file: /Users/sergey/libs/test-helpies/package.json (relative path: ./node_modules)
          Field 'browser' doesn't contain a valid alias configuration
          using description file: /Users/sergey/libs/test-helpies/package.json (relative path: ./node_modules/interceptors)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/node_modules/interceptors doesn't exist
            .ts
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/node_modules/interceptors.ts doesn't exist
            .tsx
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/node_modules/interceptors.tsx doesn't exist
            .mjs
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/node_modules/interceptors.mjs doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              /Users/sergey/libs/test-helpies/node_modules/interceptors.js doesn't exist
            as directory
              /Users/sergey/libs/test-helpies/node_modules/interceptors doesn't exist
[/Users/sergey/libs/test-helpies/interceptors]
[/Users/sergey/libs/test-helpies/interceptors.ts]
[/Users/sergey/libs/test-helpies/interceptors.tsx]
[/Users/sergey/libs/test-helpies/interceptors.mjs]
[/Users/sergey/libs/test-helpies/interceptors.js]
[/Users/sergey/libs/test-helpies/src/app/node_modules]
[/Users/sergey/libs/test-helpies/src/node_modules]
[/Users/sergey/libs/node_modules]
[/Users/sergey/node_modules]
[/Users/node_modules]
[/node_modules]
[/Users/sergey/libs/test-helpies/node_modules/interceptors]
[/Users/sergey/libs/test-helpies/node_modules/interceptors.ts]
[/Users/sergey/libs/test-helpies/node_modules/interceptors.tsx]
[/Users/sergey/libs/test-helpies/node_modules/interceptors.mjs]
[/Users/sergey/libs/test-helpies/node_modules/interceptors.js]
 @ ./src/app/app.module.ngfactory.js 14:0-35 15:1945-1970
 @ ./src/main.ts
 @ multi ./src/main.ts

Вы можете воспроизвести ошибку, используя этот демонстрационный проект: https://github.com/SergeyMell/test-helpies

Что я делаю не так? Любая помощь приветствуется.

Обновление

Ответы в Поле «браузер» не содержит действительной конфигурации псевдонима , похоже, предоставляет решения, как исправить фактически сломанный пакет при использовании приложение. В моем случае, насколько я понимаю, у меня есть некоторые проблемы при сборке или распространении моего пакета, поэтому это необходимо исправить.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Ошибка связана с / перехватчиками в вашем импорте.

Также у вас нет publi c -api.ts в папке перехватчиков

Здесь есть ссылка, где ваш publi c -api.ts должно быть и как правильно экспортировать ваши классы. Как @ angular / common / http экспортированы.

https://github.com/angular/angular/tree/master/packages/common/http

0 голосов
/ 27 мая 2020

Наконец, мне удалось преодолеть проблему. Проблема заключалась в именах пакетов. Пока мой пакет root имеет имена как @agilie/angular-helpies, дочерние пакеты должны называться @agilie/angular-helpies/interceptors и @agilie/angular-helpies/decorators, но не просто interceptors или decorators.

Это выглядит очень странно, потому что если я попытаюсь создать библиотеку с таким именем, я получу ошибку Project name "@agilie/angular-helpies/<some name here>" is invalid. Также, когда я переименовываю пакеты вручную, я получаю предупреждение, что String violates the pattern. Однако это работает.

Возможно, это можно исправить другим способом (npm ссылки или что-то другое), но я нашел это решение. На самом деле Angular имеет похожие наименования, если вы отметите https://github.com/angular/angular/blob/master/packages/common/http/package.json, например

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