Uncaught TypeError: Reflect.defineMetadata is not a function on Angular 7 Production Build

Uncaught TypeError: Reflect.defineMetadata is not a function on Angular 7 Production Build

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

Uncaught TypeError: Reflect.defineMetadata is not a function

我已经搜索过,但找不到对这个确切错误的引用。我看到大多数结果都是这样的:Uncaught TypeError: Reflect.getMetadata is not a function

确保您已安装 reflect-metadata。也可以尝试将此行添加到您的 polyfills.ts 文件中:

import 'reflect-metadata'

import 'core-js/es7/reflect';

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

这应该会起作用。

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

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

npm i core-js -S

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

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

npm i reflect-metadata

然后只需导入 polyfills.js

import 'reflect-metadata';

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