我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
当前回答
在我的例子中,在app。module中。ts,我得到这个错误,因为我在imports和entryComponents中声明了组件。
Example:
import { MyComponent } from '....';
@NgModule({
declarations: [
MyComponent
],
imports: [
MyComponent -- > remove this from here!!!!
],
providers: [],
bootstrap: [AppComponent],
entryComponents: [MyComponent]
})
export class AppModule { }
其他回答
这意味着在代码的某个地方,您正在调用一个函数,该函数又调用另一个函数,以此类推,直到达到调用堆栈限制。
这几乎总是因为递归函数的基本情况没有得到满足。
查看堆栈
考虑这段代码…
(function a() {
a();
})();
下面是几次调用后的堆栈…
正如您所看到的,调用堆栈不断增长,直到达到极限:浏览器硬编码的堆栈大小或内存耗尽。
为了修复它,确保你的递归函数有一个基本情况,能够满足…
(function a(x) {
// The following condition
// is the base case.
if ( ! x) {
return;
}
a(--x);
})(10);
在你的代码中有一个递归循环(例如,一个函数最终会一次又一次地调用自己,直到堆栈满为止)。
其他浏览器要么有更大的堆栈(所以您会得到一个超时),要么因为某种原因(可能是放置错误的try-catch)而忽略错误。
发生错误时,使用调试器检查调用堆栈。
我们最近添加了一个字段的管理网站,我们正在工作- contact_type…简单的对吧?好吧,如果你调用select“type”,并试图通过jquery ajax调用发送它,它会失败,这个错误深埋在jquery.js中。
$.ajax({
dataType: "json",
type: "POST",
url: "/some_function.php",
data: { contact_uid:contact_uid, type:type }
});
问题是,type:type -我相信是我们将参数命名为“type”-有一个名为type的值变量不是问题。我们将其更改为:
$.ajax({
dataType: "json",
type: "POST",
url: "/some_function.php",
data: { contact_uid:contact_uid, contact_type:type }
});
并相应地重写了some_function.php——问题解决了。
在我的例子中,我基本上忘记了获取输入的值。
错误的
let name=document.getElementById('name');
param={"name":name}
正确的
let name=document.getElementById('name').value;
param={"name":name}
对于我这个TypeScript初学者来说,这是_var1的getter和setter的问题。
class Point2{
constructor(private _var1?: number, private y?: number){}
set var1(num: number){
this._var1 = num // problem was here, it was this.var1 = num
}
get var1(){
return this._var1 // this was return this.var1
}
}