Невозможно прочитать свойство «модуль» неопределенного при создании угловой библиотеки

Я конвертирую приложение angular в angular lib. Я создал проект angular lib и медленно перемещал модули. Теперь я получаю следующую ошибку при создании библиотеки.

библиотека сборки ng

Ошибка

Cannot read property 'module' of undefined
TypeError: Cannot read property 'module' of undefined
    at MetadataBundler.convertSymbol (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:312:61)
    at createReference (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:438:27)
    at MetadataBundler.convertReference (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:486:28)
    at MetadataBundler.convertExpression (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:415:37)
    at C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:364:79
    at Array.map (<anonymous>)
    at MetadataBundler.convertMember (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:364:47)
    at C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:349:70
    at Array.map (<anonymous>)
    at MetadataBundler.convertMembers (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:349:38)

Обычно эта ошибка возникает при попытке неправильно зарегистрировать зависимости в модуле. Как я могу узнать, какая часть моей конфигурации делает это исключение?

Он отлично работает в угловом приложении.


person Abhishek    schedule 14.04.2019    source источник
comment
Вы сначала использовали ng generate library my-lib?   -  person argo    schedule 14.04.2019
comment
да. Сначала я создал библиотеку, и она строилась нормально.   -  person Abhishek    schedule 14.04.2019
comment
вы можете попробовать флаг --watch?   -  person argo    schedule 14.04.2019
comment
Также попробуйте вариант --buildEventLog=buildEventLog   -  person argo    schedule 14.04.2019
comment
--buildEventLog=buildEventLog не предоставляет никакой полезной информации.   -  person Abhishek    schedule 15.04.2019
comment
действительно нужно видеть ваши модули. может быть, у вас есть взаимозависимости между библиотечными модулями?   -  person Ian    schedule 01.05.2019


Ответы (3)


Если angular решит потерпеть неудачу при компиляции aot, вы можете попробовать войти в node_modules\@angular\compiler-cli\src\metadata\bundler.js и выполнить запись консоли в этом файле. Я бы начал с помещения console.log в функцию convertSymbol. «введите Это должно предоставить вам некоторую информацию о пути к файлу, который angular cli использовал перед компиляцией модуля. Например, в моем случае реэкспорт константы из бочки сломал компиляцию < img src="https://i.stack.imgur.com/WC293.png" alt="введите здесь описание изображения"> Таким образом, поиск всех случаев использования TWO_FA_INITIAL_STATE и прямой импорт TWO_FA_INITIAL_STATE устранили эту конкретную проблему. .

person Mike    schedule 09.09.2019
comment
Это было действительно полезно. В моем случае у меня был модуль API, который генерировался из Swagger, но я не импортировал его в свой компонентный модуль. - person Shafiq Jetha; 05.11.2020

Это случилось со мной, когда я забыл экспортировать определенный файл в свой public-api.ts. Рассматриваемый файл был в основном корнем модуля, просто реэкспортируя другие файлы из модуля.

Когда я пытался импортировать символ из указанного файла, это выдавало мне эту ошибку (но даже не стек вызовов).

Это действительно довольно странно, но добавление указанного файла в public-api.ts решило проблему (я говорю, что это странно, потому что я не импортировал вышеупомянутый символ из public-api.ts в первую очередь)

person parliament    schedule 28.09.2020

Я только что столкнулся с этой проблемой со следующей файловой структурой:

components/component-n/component-n.component.ts
components/index.ts
my-module.ts

Где components/index.ts содержит:

export { ComponentN } from './component-n/component-n.component.ts';

И my-module.ts содержит:

import { ComponentN } from './components';

@NgModule({
  // ...
  declarations: [
    ComponentN
  ]
})
export class MyModule {}

Оказывается, компилятор Angular не может справиться с этим и выдает «модуль» свойства «Невозможно прочитать» неопределенной ошибки.

Вместо этого изменение my-module.ts для импорта непосредственно из components/component-n/component-n.component.ts и удаление index.ts исправили это для меня.

person daiscog    schedule 21.05.2021