如何解决升级到 angular 12 后的反射元数据错误
Angular 12 自动更新从应用程序的 "emitDecoratorMetadata": true
和开发版本 (tsconfig.json
) 中删除了 ng serve
属性:
ERROR Error: Uncaught (in promise): TypeError: can't access property "name",d is undefined
在此位置的 vendor.js
文件:
... d=Reflect.getMetadata("design:type",e,r),v=!!d.name&&d.name.toLowerCase()===t.Array ...
生产版本没有这个错误
在 "emitDecoratorMetadata": true
处包含 tsconfig.json
可消除此错误
安装和包含 polyfill reflect-metadata
没有帮助
临时解决方案:包含 "emitDecoratorMetadata": true
,但已弃用。
解决方法
您可以尝试回滚到上一个可用版本。
或者临时修复是将这些添加到您的 package.json
并将 @angular/Compiler-cli
的版本更改为与 @angular/core
完全相同的版本
"@angular/compiler-cli": "2.2.0",“反射元数据”:“^0.1.8”
为了运行 ng,不要使用全局 angular-cli,而是将它添加到 package.json 并使用 npm 运行它。
"scripts": {
…
"build-my-app": "ng build --prod --aot --xyz"
},
并运行它:
npm run build-my-app
,
这是外部依赖错误,它严格要求将 emitDecoratorMetadata
设置为 true
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。