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
。