升级到 angular 12 后反映元数据错误
Reflect-metadata errors after upgrade to angular 12
Angular 12 autoupdate 从 tsconfig.json
中移除 "emitDecoratorMetadata": true
属性 并且应用程序的开发版本 (ng serve
) 有错误:
ERROR Error: Uncaught (in promise): TypeError: can't access property "name", d is undefined
at vendor.js
文件在这个地方:
... d=Reflect.getMetadata("design:type",e,r),v=!!d.name&&d.name.toLowerCase()===t.Array ...
生产版本没有这个错误
在 tsconfig.json
处包含 "emitDecoratorMetadata": true
可消除此错误
安装并包含 polyfill reflect-metadata
没有帮助
临时解决方案:包括"emitDecoratorMetadata": true
,但已弃用。
您可以尝试回滚到上一个可用版本。
或临时修复方法是将这些添加到您的 package.json
并将 @angular/Compiler-cli
的版本更改为与 @angular/core
完全相同的版本
"@angular/compiler-cli": "2.2.0",
“反映元数据”:“^0.1.8”
和 运行ning ng 不要使用你的全局 angular-cli,而是将它添加到你的 package.json 和 运行 它与 npm。
"scripts": {
…
"build-my-app": "ng build --prod --aot --xyz"
},
然后 运行 它:
npm run build-my-app
外部依赖错误,严格要求emitDecoratorMetadata
设置为true
。
Angular 12 autoupdate 从 tsconfig.json
中移除 "emitDecoratorMetadata": true
属性 并且应用程序的开发版本 (ng serve
) 有错误:
ERROR Error: Uncaught (in promise): TypeError: can't access property "name", d is undefined
at vendor.js
文件在这个地方:
... d=Reflect.getMetadata("design:type",e,r),v=!!d.name&&d.name.toLowerCase()===t.Array ...
生产版本没有这个错误
在 tsconfig.json
处包含 "emitDecoratorMetadata": true
可消除此错误
安装并包含 polyfill reflect-metadata
没有帮助
临时解决方案:包括"emitDecoratorMetadata": true
,但已弃用。
您可以尝试回滚到上一个可用版本。
或临时修复方法是将这些添加到您的 package.json
并将 @angular/Compiler-cli
的版本更改为与 @angular/core
"@angular/compiler-cli": "2.2.0", “反映元数据”:“^0.1.8”
和 运行ning ng 不要使用你的全局 angular-cli,而是将它添加到你的 package.json 和 运行 它与 npm。
"scripts": {
…
"build-my-app": "ng build --prod --aot --xyz"
},
然后 运行 它:
npm run build-my-app
外部依赖错误,严格要求emitDecoratorMetadata
设置为true
。