Typescript: предупреждение о конфликте пространств имен при компиляции проекта Angular 9 с помощью ng-packagr - PullRequest
3 голосов
/ 13 февраля 2020

Я не уверен, что действительно виноват в этом вопросе. Я думаю, что это Typescript, но это может быть ng-packagr или Angular. Это только началось, когда я обновил до Angular 9.

Вот сообщение, которое я получаю на моей производственной сборке ...

WARNING: Conflicting namespaces: dist/web-apps-shared/esm2015/public_api.js re-exports 'ɵ0' from both dist/web-apps-shared/esm2015/lib/api-applications/reducers.js and dist/web-apps-shared/esm2015/lib/account-codes/reducers.js (will be ignored)

Вот один из источников, который вызывает это ...

export const selectTotalAccountCodes = createSelector(selectSharedAccountCodeState,
  (state: SharedAccountCodeState) => state.totalItems);

Компилятор по какой-то причине берет параметр функции и присваивает ему значение const, а затем экспортирует его следующим образом ...

const ɵ0 = (state) => state.totalItems;
export const selectTotalAccountCodes = createSelector(selectSharedAccountCodeState, ɵ0);
export { ɵ0 };

Вопрос I есть, почему ɵ0 нужно экспортировать? Он используется только внутри этого файла. Я что-то упустил? Стоит ли беспокоиться об этом? Кажется, это не вызывает проблемы при использовании библиотеки, созданной с помощью этого кода.

1 Ответ

1 голос
/ 16 февраля 2020

У меня такое же предупреждение при обновлении до Angular 9, при поиске в Интернете информации / решений. Я также нашел эту страницу Angular выпуска https://github.com/angular/angular/issues/33668 (11 / 2019, так что 3 месяца go), где говорят, что это проблема Айви, что-то связанное с «экспортом».

Это странно, так как мне нужно опубликовать sh до npm и рекомендация по сборке говорит об отключении Ivy, поэтому я отключил его (angularCompilerOptions.enableIvy false в tsconfig.lib. json): вместо этого, установите для enableIvy значение true, чтобы предупреждение исчезло.

Так что я сделал эту попытку сохранив для enableIvy значение false в tsconfig.lib. json, в publi c -api.ts я изменил «export *», заменив «*» всеми экспортируемыми объектами, один за другим: предупреждение исчезло, библиотека работает.

Но я действительно не знаю, является ли это хорошим исправлением или лучше просто показать предупреждения ..

...