Ошибка сборки угловой библиотеки: Ошибка типа: Не удается прочитать свойство 'тип' с нулевым значением - PullRequest
0 голосов
/ 26 мая 2018

В Angular v6, когда я пытаюсь собрать свою библиотеку, я сталкиваюсь с крайне неописательнымсталкиваюсь с этой проблемой.

Ответы [ 4 ]

0 голосов
/ 25 апреля 2019

При разработке библиотеки Angular, в которой использовалась другая библиотека Angular, у меня возникла та же проблема.

Я бы порекомендовал сначала обновить связанные версии зависимостей, чтобы посмотреть, решит ли она проблему:

// initial versions (did not work)
"@angular-devkit/build-angular": "~0.13.0",
"@angular-devkit/build-ng-packagr": "~0.13.0",
"@angular/cli": "~7.3.1",
"@angular/compiler-cli": "~7.2.0",

// updated versions (works!)
"@angular-devkit/build-angular": "~0.13.8",
"@angular-devkit/build-ng-packagr": "~0.13.8",
"@angular/cli": "~7.3.8",
"@angular/compiler-cli": "~7.2.14",

Это сработало для меня.

Я подозреваю, что предложенное Джоном решение также будет работать (потому что я не реэкспортировал используемую транзитивную библиотеку) и необходимо, если вы используете более старую версию инструментов разработки библиотеки Angular.Однако это может не потребоваться, если вы просто обновите инструменты Angular lib dev.

0 голосов
/ 13 ноября 2018

Моя проблема была на <projectRoot>/tsconfig.json (вы можете проверить ее на # 24143 (комментарий) )

В основном мне пришлось удалить пути из tsconfig.json, например:

  "library-b": [
    "dist/library-b"
  ],
  "library-b/*": [
    "dist/library-b/*"
  ]
0 голосов
/ 01 апреля 2019

Я прибыл на эту страницу с тем же сообщением об ошибке, но разрешил это с помощью , а не , используя yarn link при разработке библиотек Angular.

Это потому, что файлы библиотеки по умолчанию уже разрешеныв файле tsconfig.json.Итак, в моем проекте Angular сгенерировал это:

// tsconfig.json
...
    "paths": {
      "lib-core": [
        "dist/lib-core"
      ],
      "lib-core/*": [
        "dist/lib-core/*"
      ],

Затем я просто запускаю 2 терминала, пока я разрабатываю пакет библиотеки и пакет приложения (который использует библиотеку)

  1. ng build --project=lib-core --watch в фоновом режиме
  2. ng serve --project=my-app для разработки моего приложения

Так что мне не нужно yarn link, и я не получаю это сообщение об ошибке!

0 голосов
/ 26 мая 2018

Обновление

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

Оригинальный ответ:

Итак, после МНОГО отладки я понял:

Моя пользовательская библиотека, пусть она называется библиотекой A, импортирует другую пользовательскую библиотеку, библиотеку B, в библиотеку A NgModule.Библиотека B экспортирует несколько компонентов и модулей из своего основного NgModule.Проблема заключалась в том, что, хотя библиотека B экспортировала компоненты и модули из NgModule, I не удалось также экспортировать эти компоненты и модули через javascript / typcript.Решением было обеспечить экспорт любых компонентов / модулей через машинописный текст, который я экспортировал в NgModule.

Пример кода проблемы

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LibraryBComponent } from './library-b.component';

@NgModule({
  imports: [CommonModule],
  declarations: [LibraryBComponent],
  exports: [LibraryBComponent],
})
export class LibraryBModule {}

Код решения

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LibraryBComponent } from './library-b.component';

export { LibraryBComponent }      // <-- addition

@NgModule({
  imports: [CommonModule],
  declarations: [LibraryBComponent],
  exports: [LibraryBComponent],
})
export class LibraryBModule {}
...