Angular 4应用在生产环境构建后无法工作

8

我正在尝试部署我的第一个Angular 4应用程序,但遇到了严重问题。

每次尝试加载应用程序时,都会出现以下错误:

SCRIPT5007: Unable to get property 'create' of undefined or null reference
vendor.8f08e50eff049f37e041.bundle.js (1,93870)

我不知道如何调试这个问题。

为了构建服务器,我运行了以下命令:ng build --prod

我还尝试了:ng server --prod,但实际上我得到了这个错误两次,以及上面提到的那个错误

SCRIPT5011: Can't execute code from a freed script
polyfills.3ae08eaf6129a55130cb.bundle.js (1,30944)

编辑

我重新安装了Angular CLI并创建了一个新的应用程序,然后将旧代码(index.html和app文件)复制到新的应用程序中,但遇到了同样的问题。

为了确定,我创建了另一个应用程序,没有进行任何更改并运行它。

现在我可以肯定地说,我相信问题在我编写的代码中。但我不知道该看哪里,在我修改的每个文件中都进行了搜索,但没有找到任何带有create属性的代码。

有没有一种方法可以在不混淆代码的情况下为我的应用程序构建产品?

更新

我运行了ng build --prod --sourcemap=true命令,并在日志开头收到了此警告。

The <template> element is deprecated. Use <ng-template> instead ("
[WARNING ->]<template [ngIf]="!isClosed">
  <div [class]="'alert alert-' + type" role="alert" [ngClass]="classes""): ng:///C:/Users/jamie/Desktop/play/node_modules/ngx-bootstrap/alert/alert.component.d.tsHash: 4607d21b2e5e9f27bd39

这段代码是否已经过时导致了问题?

此外,正在gamerfinder.net/dev上运行的构建是我从上述命令中获取的构建,现在我不再遇到"无法获取属性'create'"的错误,而是对于每个文件都会出现"syntax error"的错误(您可以通过访问链接来查看)。

该应用程序的全部代码可以在GitHub上找到,供任何人查看。


1
你能否移除 --prod 参数,这样你就可以看到出现错误的地方了。 - Robin Dijkhof
vendor 是您的应用程序外部库所在的位置,请向我们展示您正在使用哪些库。正如 Robin 所说,运行时不要使用 --prod 并检查是否有错误,如果没有,则可能是一个尚未准备好 AoT 的库的问题。 - dlcardozo
@camaron 我在问题底部添加了一份外部模块列表。希望这能有所帮助。 - Jamie McAllister
1
运行以下命令:ng build --prod --sourcemaps=true,这可能会告诉你出了什么问题。 - Robin Dijkhof
1
我曾经遇到过和你类似的问题。肯定是你正在使用的某个库在生产编译期间引起了错误。我的也可以在没有--prod的情况下工作。通过查看构建期间的错误日志,我也能够确定哪个库引起了我的问题。如果你不分享代码、库或完整的错误日志,除了猜测之外,我们将无法提供任何进一步的帮助。 - Andy
显示剩余10条评论
1个回答

3
我安装了你的项目,但遇到了构建问题。我通过将CLI更新到1.2.7来解决它。这可能是因为您在使用最新版本的Angular时使用固定版本的CLI。我建议您使用^1.2.7作为CLI版本。
接下来,我遇到了和你一样的问题。很容易解决。从app.module.ts中删除此行:
platformBrowserDynamic().bootstrapModule(AppModule);

它不应该在那里。

附注:你的代码有点混乱。文件名使用大写字母,忘记分号等。建议您阅读样式指南并在IDE中使用TSlint。


谢谢!是的,我在理解npm的细节方面遇到了一些困难哈哈(我有一个全局的Angular CLI版本为1.2.7,但当我运行ng serve/build时,会收到关于使用1.2.1 CLI的警告),我会查看样式指南并尝试改进代码 :) 谢谢 - Jamie McAllister
那个警告并不是什么需要担心的事情。它只是告诉你你的全局版本较旧。 - Robin Dijkhof

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接