TypeError: Невозможно прочитать свойство 'kind' undefined в getAssignmentTargetKind

Эта проблема начала возникать при обновлении моего проекта Angular 6 до 7.x.

Я открыл вопрос о репозитории angular-cli github, но они не могли помочь.

Поэтому я создал новый проект и добавил все компоненты один за другим, чтобы "надеюсь" заметить причину проблемы.

К сожалению, я не смог определить проблему. Вот журнал:

ERROR in : TypeError: Cannot read property 'kind' of undefined
at getAssignmentTargetKind (E:\McClient\node_modules\typescript\lib\typescript.js:10049:28)
at Object.isAssignmentTarget (E:\McClient\node_modules\typescript\lib\typescript.js:10092:16)
at checkObjectLiteral (E:\McClient\node_modules\typescript\lib\typescript.js:46107:45)
at checkExpressionWorker (E:\McClient\node_modules\typescript\lib\typescript.js:50748:28)
at checkExpression (E:\McClient\node_modules\typescript\lib\typescript.js:50696:42)
at checkExpressionWithContextualType (E:\McClient\node_modules\typescript\lib\typescript.js:50524:26)
at checkApplicableSignature (E:\McClient\node_modules\typescript\lib\typescript.js:47963:35)
at chooseOverload (E:\McClient\node_modules\typescript\lib\typescript.js:48281:26)
at resolveCall (E:\McClient\node_modules\typescript\lib\typescript.js:48231:26)
at resolveCallExpression (E:\McClient\node_modules\typescript\lib\typescript.js:48534:20)
at resolveSignature (E:\McClient\node_modules\typescript\lib\typescript.js:48800:28)
at getResolvedSignature (E:\McClient\node_modules\typescript\lib\typescript.js:48844:26)
at checkCallExpression (E:\McClient\node_modules\typescript\lib\typescript.js:48936:29)
at checkExpressionWorker (E:\McClient\node_modules\typescript\lib\typescript.js:50759:28)
at checkExpression (E:\McClient\node_modules\typescript\lib\typescript.js:50696:42)
at resolveDecorator (E:\McClient\node_modules\typescript\lib\typescript.js:48741:28)

Вот ссылка на проблему github с журналами из функции checkSourcefile, которую я должен был регистрировать:

https://github.com/angular/angular-cli/issues/13172

Как я могу отследить и (надеюсь) устранить причину этого?

Редактировать: Моя нг - Информация о версии

Angular CLI: 7.1.3
Node: 8.11.4
OS: win32 x64
Angular: 7.1.3
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.11.3
@angular-devkit/build-angular     0.11.3
@angular-devkit/build-optimizer   0.11.3
@angular-devkit/build-webpack     0.11.3
@angular-devkit/core              7.1.3
@angular-devkit/schematics        7.1.3
@angular/cdk                      7.1.1
@ngtools/webpack                  7.1.3
@schematics/angular               7.1.3
@schematics/update                0.11.3
rxjs                              6.3.3
typescript                        3.1.6
webpack                           4.23.1

17 ответов

Я просто перезапускаю

    ng serve

снова и все заработало!

Отказ от ответственности: это не очень хорошее "исправление", но оно выполнит свою работу, если вы окажетесь в затруднительном положении. Это проблема, связанная с Angular devkit и оптимизатором сборки, и связана с несоответствием версий.

Я столкнулся с этой проблемой и нашел обходной путь в случае, если обновление Angular или других пакетов NPM не является идеальным вариантом для немедленной работы. Этот комментарий на Github указал мне правильное направление. В файле./node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js в каталоге вашего проекта есть функция с именем isAngularDecoratorMetadataExpressionгде-то около строки 237 (в зависимости от вашей версии). Внизу функции есть следующий код:

// Check second array entry for __metadata call.
if (decorateArray.elements[1].kind !== ts.SyntaxKind.CallExpression) {
  return false;
}

Если вы добавите этот код чуть выше этих строк и сохраните файл, он обойдет проблему:

// Workaround for missing metadata.
if(!decorateArray.elements[1]) {
  return false;
}

И после того, как вы это сделаете, запустите эту команду, чтобы снова попробовать построить свой проект:

node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer

Я боролся с той же проблемой, немного покопался и нашел 2 основных решения:

  1. Установка пакета @types/history.
  2. Понижение машинописи до 3.1.6(поскольку ошибки тогда не было).

Смотрите эту проблему GitHub здесь.

Запустите приложение еще раз, используя ng serve и это решило проблему для меня. Это произошло, когда я вытащил код из ветки в существующую ветку, которая работала через ng serve.

Я столкнулся с этой проблемой, и оказалось, что @angular-devkit/build-angular был в devDependencies когда я пытался создать для продакшена - так что переместил это на dependencies решил проблему.

Решено с версии

npm я @angular-devkit/build-angular@0.803.7 -s

проверьте это https://www.npmjs.com/package/@angular-devkit/build-angular

У меня тоже была эта проблема. Я решил эту проблему, обновив свой локальный @angular/cli до той же версии, что и версия @anguluar/cli в моем проекте.

  • У меня возникла проблема при переносе ионного приложения с V4 на V5.
  • Это мое изображение журнала ошибок.

  • Это было исправлено с помощью следующего решения.

https://github.com/ckeditor/ckeditor4-angular/issues/78

В моем случае понижение версии @angular-builders/custom-webpack с версии 10.0.1 к версии 10.0.0 в package.json работал.

У меня была такая же проблема, когда я пытался запустить приложение angular в производственном режиме

Я пробовал это npm i @angular-devkit/build-angular и это помогло

Эта проблема может быть решена путем перезапуска:

Используйте нг подачу

Обновление машинописного кода devDependency с 3.9.0 до 4.0.3 и запуск ng g c [имя-каталога] --skip-import

Для меня serve команда работала нормально, но build команда выдала ошибку.

Ошибка заключалась в том, что мы использовали собственный конструктор ' @angular-builders/custom-webpack'. Версия этого пакета вызвала проблему.

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

Для этой ошибки TypeError: Невозможно прочитать свойство 'kind' undefined в getAssignmentTargetKind, это сработало для меня

https://update.angular.io/

Наконец-то я решил эту проблему, добавив --poll 1000 при запуске ng serve:

ng serve --poll 1000

В моем случае проблема заключалась в том, что у меня были абстрактные классы с @Injectable, удаление которых решило проблему.

Надеюсь, это поможет

Я получил эту ошибку при создании приложения, я изменил конфигурации сборки в angular.json, это сработало!!

{
  ...
  "configurations": {
    "production": {
      budgets: [
        "initial": true,
        minimum: 5mb,
        maximum: 8mb
      ],
      "common-chunk": true
      "vendor-chunk": true
    }
  }
}
Другие вопросы по тегам