gpt4 book ai didi

javascript - Breeze 错误 : Illegal construction - use 'or' to combine checks

转载 作者:可可西里 更新时间:2023-11-01 01:49:59 24 4
gpt4 key购买 nike

我遇到了这个 Breeze 错误

[Illegal construction - use 'or' to combine checks]

在加载实体的编辑页面时在 Chrome 上。当我刷新页面时,错误消息不再出现。这个错误在我的网站上随机发生,不定期发生。我无法使用特定场景重现它,只是随机遇到它。

我在 Breeze 代码中看到这条错误消息

if (curContext.prevContext === null) {
curContext.prevContext = context;
// just update the prevContext but don't change the curContext.
return that;
} else if (context.prevContext === null) {
context.prevContext = that._context;
} else {
throw new Error("Illegal construction - use 'or' to combine checks");
}

能否请您告诉我:根据上面的代码块,在什么情况下会抛出此错误?

非常感谢。

最佳答案

我的团队也遇到过这个问题。它大约在一个月前开始发生,但在过去的 1-2 周内确实增加了频率。可能是最近的 chrome 版本导致的。

这是我所知道的,所有关于 breeze 1.4.1 的评论:

-行为是断断续续的,似乎是随机发生的。对我来说,这表明存在时间问题。

- 生成此错误的主要浏览器是 chrome。我们还支持 firefox 和 IE,并且没有具体证据表明除 chrome 之外的任何浏览器都会抛出此错误。也许最近发布的 chrome 具有不同的性能配置文件,从而加剧了先前存在的问题(再次,时机?)

-对我们来说,关闭捆绑和缩小似乎可以解决这个问题。我认为我们的缩小代码(Microsoft Web 优化)没有问题,因为无论如何一切都可以在其他浏览器上运行。这对我来说再次表明时间问题。

-最后,我能够在打开 chrome 开发人员工具的情况下在我的开发环境中重现它。使用 q promise 堆栈,并痛苦地浏览缩小的代码,我能够将其缩小为:在我的应用程序启动时,我调用 fetchMetadata。在 fetchMetadata 成功处理程序中,我调用了 metadataStore.getEntityType('some_entity') 并且正是在这个 breeze 方法中,在我的场景中生成了错误。在页面应用程序生命周期的早期阶段,元数据存储的某些内容并未始终如一地初始化或设置。

编辑:从评论来看,这似乎是一个 chrome 33 错误,其中 null !== null 随机出现。由于未知原因,breeze.debug.js 文件的缩小似乎是相关的(大多数/所有问题报告都发生在 breeze 的缩小版本上)。对我来说,更改 breeze.debug.js 中的以下代码:

} else if (context.prevContext === null) {
context.prevContext = that._context;
} else {
throw new Error("Illegal construction - use 'or' to combine checks");
}

到:

} else if (context.prevContext == null) {
context.prevContext = that._context;
} else {
throw new Error("Illegal construction - use 'or' to combine checks");
}

(在第一行将 === 更改为 ==)似乎已经解决了该问题作为解决方法。在此更改后,breeze 的所有其他方面对我来说都运行良好。

我注意到的另一件事是函数的缩小版本有一个与函数 (t) 同名的参数。这仍然不能解释“Aaarg”测试的结果。

   function t(n, t) {
if (n._context) {
for (var i = n._context; i.prevContext != null; )
i = i.prevContext;
if (i.prevContext === null)
return i.prevContext = t, n;
if (t.prevContext == null)
t.prevContext = n._context;
else
throw new Error("Illegal construction - use 'or' to combine checks");
}
return b(n, t)
}

关于javascript - Breeze 错误 : Illegal construction - use 'or' to combine checks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com