在升级到angular 12后反映元数据错误



Angular 12自动更新从tsconfig.json中删除"emitDecoratorMetadata": true属性,应用程序的开发版本(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 ...

生产版本没有此错误

tsconfig.json包含"emitDecoratorMetadata": true消除了这个错误

安装和包括polyfillreflect-metadata对没有帮助

临时解决方案:包括"emitDecoratorMetadata": true,但不推荐使用。

您可以尝试回滚到上一个可用的版本。

或者一个临时的解决方案是将这些添加到您的package.json中,并将@angular/Compiler-cli的版本更改为与@angular/core完全相同的版本

"angular/编译器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

最新更新