如何在应用程序加载期间捕获“未捕获的类型错误:无法读取未定义的属性‘isModel’?

Posted

技术标签:

【中文标题】如何在应用程序加载期间捕获“未捕获的类型错误:无法读取未定义的属性‘isModel’?【英文标题】:How do I catch 'Uncaught typeError: Cannot read property 'isModel' of undefined' during App load? 【发布时间】:2012-10-28 18:05:04 【问题描述】:

我正在使用本地存储的 Chrome 上开发 ST2。有时,存储架构似乎已损坏。发生这种情况时,我的应用程序在加载过程中失败,并显示“未捕获的 typeError:无法读取未定义的属性 'isModel'”。让我的应用运行的唯一方法是在控制台中执行 localstorage.clear()。

我假设这是一个 ST2 错误,因为损坏的发生似乎与我的代码或我在应用程序中所做的事情无关。

我的主要问题是如何捕获异常,以便应用程序可以恢复,或者提醒用户发生了什么?现在,该应用程序根本无法加载。我尝试将 Ext.application() 包装在 app.js 中,但执行正确。没有达到我的启动功能。

【问题讨论】:

您的应用程序在从本地存储中删除模型后尝试访问模型。为您的控制器编码提供您的问题,也许我可以提供帮助。 谢谢,但没有代码。我的应用程序只会添加到本地存储。我无处删除任何东西。该异常是由 ST 的内部初始化引发的,而不是在我的任何控制器代码中。正如我在问题中所说,此错误是随机发生的,并且似乎与任何特定的用户操作无关。 【参考方案1】:

您的应用程序一定发生了一些奇怪的事情。可能您同时找到了原因并认识到失败位在您的应用程序中的某个位置。无论如何,如果您遇到类似的情况,那么最好的选择可能是捕获错误事件并在那里进行错误处理。即

window.addEventListener("error", function(errorEvent) 

    //
    // Add your error handling here
    //
    // if returns true, the error is suppressed and not thrown
    return false;
 );

【讨论】:

非常感谢您发布答案。我前段时间放弃了 ST,转而使用 AngularJS。

以上是关于如何在应用程序加载期间捕获“未捕获的类型错误:无法读取未定义的属性‘isModel’?的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:无法读取 null 的属性“firstChild”(Google 地图无法加载)[重复]

未捕获的类型错误:无法读取未定义的属性“createDocumentFragment”

Vuejs - 未捕获的类型错误:无法重新定义属性:$router

未捕获的类型错误:无法读取未定义的属性“toLowerCase”

JQuery:未捕获的类型错误:无法读取未定义的属性“调用”

未捕获的类型错误:无法读取未定义的属性 XXX