繁体   English   中英

调用 platformBrowserDynamic().bootstrapModule(@NgModule) 返回断言错误传入的类型不是 NgModuleType,它没有 'ɵmod' 属性

[英]Call platformBrowserDynamic().bootstrapModule(@NgModule) returns ASSERTION ERROR Type passed in is not NgModuleType, it does not have 'ɵmod' property

我对“platformBrowserDynamic().bootstrapModule(app.app_module)”调用有问题,错误消息是“未捕获的错误:断言错误:传入的类型不是 NgModuleType,它没有‘ɵmod’属性”。 但是我可以在调试过程中看到这个属性: AppModule NgModule proto emod property

app.app_module 是一个新的 @NgModule 实例,用于引导我的自定义应用程序组件。 我使用了打字稿。 有没有人知道为什么会发生这种情况?

另外这里还有源 JS 代码https://gist.github.com/sunnygleason/74e84acd0a03a925ec901594723ce876我正在将它转换成 Typescript Angular CLI 项目。 这是https://github.com/AnatoliYatskevich/WIA

我更改的特定文件是: https: //github.com/AnatoliYatskevich/WIA/blob/master/src/main.ts https://github.com/AnatoliYatskevich/WIA/blob/master/src/index.html https: //github.com/AnatoliYatskevich/WIA/blob/master/src/app/app.component.ts https://github.com/AnatoliYatskevich/WIA/blob/master/src/app/app.module.ts

工具 WebStorm,来自https://www.pubnub.com/docs/angular2-javascript/pubnub-javascript-sdk 的示例格式。

谢谢

该错误是由于错误的模块导入而发生的(有时它被抛出为“无法读取未定义的属性 'ngModule'”,这也在更深的级别设置为“传入的类型不是 NgModuleType,它没有 'ɵmod' 属性” )。 所以下面的程序(对两种情况都做了一些调整)

如何找到错误的准确位置? (尤其是在具有多个相互依赖模块的复杂项目中,例如在我们团队的项目中)

core.js:26131 未捕获的类型错误:无法读取isModuleWithProviders (core.js:26131) at expandModuleWithProviders (core.js:26125) at Array.map () at Function.get (core.js:25781) 处未定义的属性“ngModule” ) 在 registerNgModuleType (core.js:24103) at core.js:24114 at Array.forEach () at registerNgModuleType (core.js:24114) at new NgModuleFactory$1 (core.js:24211) at compileNgModuleFactory__POST_R3__ () )

在浏览器的开发工具中,在发生错误的行(在本例中为 core.js:26131)放置一个调试断点。 那里的代码对我们没有多大帮助,因为它是错误记录功能(可能是defaultErrorLogger )。 然而,当断点被触发时,我们可以继续我们的开发工具调用堆栈,直到以下代码(或类似代码)真正发生错误:

function isModuleWithProviders(value) {
    return value.ngModule !== undefined;
}

value未定义时会发生错误,因此我们可以在此处放置一个带有条件的条件断点!value ,这将显着加快错误追踪过程(仅在错误的模块导入时触发)。

当条件断点被触发时,我们可以再次向上调用堆栈直到get方法,在那里我们可以访问moduleType.name以查找导致错误的模块的名称。

第二部分中,我们打开具有该名称的模块,我们可以在其中使用分而治之的方法,通过注释模块导入,直到错误消失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM