【问题标题】:Extjs Intermittent errorExtjs间歇性错误
【发布时间】:2017-01-27 16:10:44
【问题描述】:

使用 Extjs 4.1,出现间歇性错误。 有时会发生,但大多数时候不会发生。
当我启动应用程序时总是出现这种情况,所以我按 F5 后一切恢复正常。


使用this reference 调试错误,我注意到它发生在第 29590 行。

错误信息非常笼统:

未捕获的类型错误:无法读取 null 的属性“dom”
在 constructor.finishRender (ext-all-debug-w-cmets.js:29590)
在 constructor.finishRenderItems (ext-all-debug-w-cmets.js:39796)
在 constructor.finishRender (ext-all-debug-w-cmets.js:40889)
在 constructor.finishRenderChildren (ext-all-debug-w-cmets.js:44526)
在 constructor.afterRender (ext-all-debug-w-cmets.js:29331)
在 constructor.callParent (ext-all-debug-w-cmets.js:6194)
在 constructor.afterRender (ext-all-debug-w-cmets.js:36521)
在 constructor.finishRender (ext-all-debug-w-cmets.js:29625)
在 constructor.finishRenderItems (ext-all-debug-w-cmets.js:39796)
在constructor.finishRender (ext-all-debug-w-cmets.js:40889)

Here is an error print

这一定是什么原因造成的?

【问题讨论】:

    标签: javascript extjs rendering extjs4.1


    【解决方案1】:

    我会对此发表评论,但它不适合。

    我能想到的原因有很多种。它们中的大多数是基于异步调用的。您必须提供更多信息才能回答问题。

    显然,me.el 是 null,它不应该是。因此,首先您必须找到导致问题的组件。为此,您应该将第 29590 行换成这样的:

    try {
        me.container = Ext.get(me.el.dom.parentNode);
    } catch(e) {
        console.log(me.id);
        console.log(me.itemId);
        console.log(me.xtype);
        ...
        console.log(me);
        throw e;
    }
    

    这应该让您了解哪些组件会受到影响。

    然后向我们展示该组件的代码。还要检查您是否从组件外部修改了该组件的配置,例如来自存储加载操作或其他异步任务。另外,您应该查看组件及其祖先的覆盖是否是从单独的 JS 文件加载的 - 也许它们有时是在调用 finishRender 之前,有时是在调用之后加载,并准确修复此错误。

    这些只是其中几个可能的原因。

    【讨论】:

    • 感谢您的回报。正如你提到的,我添加了try catch。但是错误不再发生。收到退货后,我会在这里发表评论。
    猜你喜欢
    • 2016-05-20
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多