未捕获的TypeError:Reflect.defineMetadata不是Angular 7 Production Build上的函数

CAl*_*lex 6 production metadata typeerror angular

我正在尝试将Angular 7应用的生产版本部署到Azure。我可以在运行ng build时轻松部署它,但是当尝试完整运行时,我ng build --prod在控制台下收到此错误,并且该页面无法加载。在本地服务器上运行应用程序时也会发生这种情况。

Uncaught TypeError: Reflect.defineMetadata is not a function
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我已经搜索过,但找不到该确切错误的参考。我看到大部分结果是这样的:Uncaught TypeError: Reflect.getMetadata is not a function

Sid*_*era 10

确保已reflect-metadata安装。另外,尝试将以下行添加到polyfills.ts文件中:

import 'reflect-metadata'
Run Code Online (Sandbox Code Playgroud)

要么

import 'core-js/es7/reflect';
Run Code Online (Sandbox Code Playgroud)

理想情况下,此(第二条import语句)已经是polyfills.ts文件的一部分。

那应该使它工作。

  • 谢谢,我在导入“zone.js”后用“import 'reflect-metadata'”(角度8.2.x)解决了。 (2认同)

小智 6

不要安装整个 core-js,可以安装

npm i reflect-metadata
Run Code Online (Sandbox Code Playgroud)

然后简单地导入polyfills.js

import 'reflect-metadata';
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您不需要安装整个 core-js,因为只需要reflect-metadata。:)


Mic*_*ick 5

polyfills.ts 中的导入不再包含在默认的 Angular 项目中,因为 Angular 仅在开发环境中需要它。

如果您需要polyfill,例如像这样的模块class-transformer,您可以将其添加到polyfills.ts中:

npm i core-js -S

import 'core-js/proposals/reflect-metadata';