TypeError:无法读取getAssignmentTargetKind

时间:2018-12-18 06:36:07

标签: angular typescript angular-cli angular-cli-v7

将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

我如何跟踪并(希望)解决造成此问题的原因?

编辑:我的ng-版本信息

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

16 个答案:

答案 0 :(得分:13)

我只是重新运行

    ng serve

再次成功!

答案 1 :(得分:2)

我在同一个问题上苦苦挣扎,做了一些挖掘,发现了两个主要的解决方案:

  1. 安装“ @ types / history”软件包。
  2. 将打字稿降级为3.1.6(因为未发生错误) 然后)。

请参阅此GitHub问题here

答案 2 :(得分:2)

使用 ng serve再次运行应用程序,它为我解决了该问题。 当我将代码从一个分支拉到通过ng serve运行的现有运行分支时,发生了这种情况。

答案 3 :(得分:2)

从版本中解决

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

选中此https://www.npmjs.com/package/@angular-devkit/build-angular

答案 4 :(得分:2)

  • 在将离子应用程序从V4迁移到V5时遇到问题。
  • 这是我的错误日志图像。

enter image description here

  • 使用以下解决方案进行了修复。

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

答案 5 :(得分:2)

免责声明:这不是一个很好的“解决方案”,但是如果您遇到紧急情况,它将可以完成工作。这是与Angular devkit和构建优化器有关的问题,与版本不匹配有关。

我遇到了这个问题,并找到了解决方法,以防升级Angular或其他NPM软件包不是使事情立即工作的理想选择。 This comment on Github为我指明了正确的方向。在项目目录中的文件./node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js中,第237行附近有一个名为isAngularDecoratorMetadataExpression的函数(取决于您使用的版本)。该函数底部的代码如下:

// 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

答案 6 :(得分:1)

我也有这个问题。我通过将本地@ angular / cli更新为与项目中的@ anguluar / cli版本相同的版本来解决了该问题。

答案 7 :(得分:1)

将打字稿devDependency从3.9.0更新到4.0.3并运行ng g c [目录名] --skip-import

答案 8 :(得分:0)

对于此错误,TypeError:无法读取getAssignmentTargetKind上未定义的属性“种类”,这对我有用

https://update.angular.io/

答案 9 :(得分:0)

可以通过重新启动解决此问题:

使用 ng服务

答案 10 :(得分:0)

在我的情况下,问题是我有@Injectable的抽象类,将其删除即可解决问题。

希望有帮助

答案 11 :(得分:0)

当我尝试在生产模式下运行角度应用程序时遇到了同样的问题

我尝试了这个npm i @angular-devkit/build-angular,它很有帮助

答案 12 :(得分:0)

在构建应用程序时出现此错误,我在angular.json中修改了构建配置,它起作用了!

{
  ...
  "configurations": {
    "production": {
      budgets: [
        "initial": true,
        minimum: 5mb,
        maximum: 8mb
      ],
      "common-chunk": true
      "vendor-chunk": true
    }
  }
}

答案 13 :(得分:0)

在我的情况下,将package.json中的@ angular-builders / custom-webpack从版本10.0.1降级到版本10.0.0即可。

答案 14 :(得分:0)

对我来说,serve 命令运行良好,但 build 命令出现错误。

错误是,因为我们使用的是自定义构建器“@angular-builders/custom-webpack”。此软件包的版本导致了问题。

一旦我按照我们的 angular 版本安装了这个包的正确版本,问题就解决了。

答案 15 :(得分:0)

我遇到了这个问题,结果证明 @angular-devkit/build-angular 在我尝试为 prod 构建时在 devDependencies 中 - 因此将其移至 dependencies 解决了问题。