【问题标题】:Cannot read property 'kind' of undefined无法读取未定义的属性“种类”
【发布时间】:2020-06-24 00:51:23
【问题描述】:

运行我的项目

ng build --prod --base-href="./"

收到以下错误消息

ERROR in ./node_modules/ng-multiselect-dropdown/fesm2015/ng-multiselect-dropdown.js
Module build failed (from ./node_modules/@angular-devkit/build-optimizer/src/build-optimizer/webpack-loader.js):
TypeError: Cannot read property 'kind' of undefined
    at isAngularDecoratorMetadataExpression (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js:265:35)
    at checkNodeForDecorators (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js:77:21)
    at visitNodes (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16514:30)
    at Object.forEachChild (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16740:24)
    at checkNodeForDecorators (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js:68:31)
    at visitNode (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16505:24)
    at Object.forEachChild (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16635:21)
    at checkNodeForDecorators (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js:68:31)
    at visitNode (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16505:24)
    at Object.forEachChild (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16703:24)
    at checkNodeForDecorators (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js:68:31)
    at visitNode (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16505:24)
    at Object.forEachChild (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16692:24)
    at checkNodeForDecorators (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/src/transforms/scrub-file.js:68:31)
    at visitNode (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16505:24)
    at Object.forEachChild (/home/gayathri/Desktop/webapp8/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:16599:21)

【问题讨论】:

标签: javascript angular


【解决方案1】:

不是一个永久的解决方案,但我只在生产中使用 datepicker。我去了angular.json中的生产配置,把buildOptimizer改成了false。

【讨论】:

  • 帮助但试图理解或找到一个永久的解决方案..!谢谢。
【解决方案2】:

我发现很难为图书馆建设者找到有关此错误的信息,因此我将其发布在这里。我们不能只告诉用户升级他们的 Angular 版本或禁用构建优化。

要使库与@angular/cli 版本 6 和 7 一起工作,您必须在构建库时导出所有装饰器元数据。为此,请将以下内容添加到您的库的 tsconfig.json

"compilerOptions": {
  "emitDecoratorMetadata": true
}

【讨论】:

  • 感谢您添加您的答案 - 来自一位图书馆开发人员,这对我来说是一个巨大的帮助
  • 当我检查 tsconfig.json 时,emitDecoratorMetadata 已经设置为 true,但我仍然面临这个问题。
  • @AdnanSheikh 你确定你检查的是你的库的 tsconfig 而不是使用你的库的项目的 tsconfig 吗?如果是,请检查 Angular 是否使用 tsconfig.json,有时它使用另一个文件,例如 tsconfig.prod.json,在这种情况下,请务必更改 Angular 正在使用的文件。
【解决方案3】:

ng-multiselect-dropdown 的版本降级到 0.2.3 可能会解决此问题。

【讨论】:

    【解决方案4】:

    只需从包中删除插入符号 ^ 符号,即

    "ng-multiselect-dropdown": "^0.2.3" to "ng-multiselect-dropdown": "0.2.3"
    

    解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-18
      • 2021-04-29
      • 2020-01-13
      • 2023-01-23
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多