我已经设法将我的角度应用程序开发为开发版本。我尚未将其作为生产版本完成,因为它给了我一些错误,我只需要测试开发版本。
开发人员的构建过程可以正常进行,没有任何错误。然后,我使用Nginx docker容器中dist文件夹中的文件来托管文件。
问题是什么都没有显示,只有白页,并且在控制台中我收到一条错误消息,提示“未捕获的TypeError:无法读取未定义的属性'id'”。下面的完整消息似乎没有指向我所写的内容,我花了几个小时在网上搜索,但找不到有关此问题的任何信息。
我尝试了一些不同的操作,例如运行“ npx ivy-ngcc”,我手动阅读该文件会编译一些东西。无论如何,我是否可以获得有关该错误的更多详细信息,以查看是否已完成此操作?
更新 所以我恢复了在main.ts中注释掉的行,如下面的注释中所述。我还按照建议尝试了“ ng build --aot”,这给了我一系列错误,这些错误似乎都与使用的devextreme组件有关。当我使用来自github的devextreme角启动器项目启动该项目时,我感到很奇怪。
我收到如下消息:
'dx-scroll-view无效的HTML元素'
'node_modules / devextreme-angular / ui / drawer.d.ts-错误:出现在 SideNavOuterToolbarModule的NgModule.imports,但无法解析为NgModule类'
答案 0 :(得分:10)
如果您进入devtools并单击Sources,请“不要在异常上暂停”,然后选中“在捕获的异常后暂停”,然后继续操作,直到获得“ id错误”,您将找到引发该错误的模块。在我的案例中,有一个名为“ ngx-card / ngx-card”的第三方库,其模块是错误的原因(CardModule)。希望这将有助于至少找到错误的原因
答案 1 :(得分:2)
在您的Angular项目的 <html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="Hero Battle Arena.css" />
<link rel="icon" href="favicon.png">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<meta charset="UTF-8">
<title>Worlds Apart</title>
</head>
<body class="bg-color">
//STUFF THAT ISN'T IMPORTANT
<script src="Hero Battle Arena.js"></script>
<script src="Hero Battle Arena(game).js"></script>
</body>
</html>
中,将其禁用以禁用新的Angular模板引擎Ivy
1 aa cc vv bb bb bb ss ff ff ff ff > from table 1
1 aa ss ff re df dfsd sfsd ss > from table 2
2 aa cc vv bb bb bb ss ff ff ff ff > from table 1
2 aa ss ff re df dfsd sfsd ss > from table 2
答案 2 :(得分:1)
我设法通过在角度编译选项中禁用常春藤来解决该问题。我一完成,它就可以同时构建开发版本和生产版本,并且现在在Nginx中可以完美地工作。
感谢所有提供帮助的人:)
答案 3 :(得分:0)
通常,如果这不是您写的内容,则通常会与您的实现方式有关-即“拜访食品供应商并订购他们不提供的食品”。
我知道这不是一个具体的答案,但是确保在app.module中正确配置了东西是一个不错的第一步。也许尝试通过AOT进行构建也会给您带来一些更多的失败源于尝试构建的失败。
答案 4 :(得分:0)
希望这可以帮助另一个可怜的灵魂。
对于使用devextreme的任何人,请确保将您的版本至少更新为19.2.5
https://github.com/DevExpress/devextreme-angular/issues/975#issuecomment-580172291
从19.2.5版本开始,我们支持IVY编译器。
答案 5 :(得分:0)
我遇到了相同的问题,并通过将其更改为
loadChildren: './app/page/account/account.module#AccountModule'
到
loadChildren: () =>
import('./app/page/account/account.module').then(
(m) => m.AccountModule
)
在app-router.module.ts
答案 6 :(得分:0)
错误的根本原因很可能是您需要显式加载但不需要加载的模块,或者是您自己的模块中的循环引用。 Rodrigo的答案很好,但更具体地说,您需要在Angular的registerNgModuleType
中找到core.js
函数,并在第一行上设置条件断点。条件应为!ngModuleType || !ngModuleType.ɵmod
。 (您可以在大多数现代浏览器中通过右键单击行号来设置条件断点。)
一旦您在异常发生之前暂停了执行,就可以查看ngModuleType
的值(如果它不是未定义的),或者在作用域中向上移动一两个帧,然后查看{{ 1}}。
答案 7 :(得分:0)
对我来说,这个问题是在使用Storybook时发生的。
它发生的原因是由于我预编译节点模块的方式。我在做:
不正确
ngcc --properties es2015 browser module main --first-only
正确
ngcc
使用此方法进行修复