Nowjs:[RangeError:超出最大调用堆栈大小]

Posted

技术标签:

【中文标题】Nowjs:[RangeError:超出最大调用堆栈大小]【英文标题】:Nowjs: [RangeError: Maximum call stack size exceeded] 【发布时间】:2012-06-05 09:13:00 【问题描述】:

当我在端口 8080 上启动服务器时,它不会给我一个错误,但是当我尝试浏览 http://localhost:8080/nowjs/now.js 时,服务器会引发一个错误:

[RangeError: Maximum call stack size exceeded]undefined

我对 socket.io 进行了同样的尝试,效果很好。

【问题讨论】:

看到这个javascriptrules.com/2009/06/30/limitation-on-call-stacks 您能否包含一些代码示例甚至是重现问题的小提琴?如果你在这个过程中没有找到源头,那么也许我们可以发现它:) 即使是这个简单的代码也会产生错误:var http = require('http'); var server = http.createServer(); server.listen(8080); var nowjs = require("now"); var everyone = nowjs.initialize(server); 顺便说一下,我在 Ubuntu 12.04 上运行它 【参考方案1】:

嗯,如果 now.js 使用 date.js,也许你的问题在于 here。该链接所说的是 date.js 尝试将 toString 设置为 Date 原型,但是当 toString 已经定义时,您会得到其他答案中提到的 循环引用

基本上,他们说在 date.js 中,你会改变

Date.prototype._toString=Date.prototype.toString

if(Date.prototype._toString==undefined) Date.prototype._toString=Date.prototype.toString;

我希望它会对某人有所帮助。它帮助了我。

【讨论】:

你是神!谢谢【参考方案2】:

Aadit,您是否阅读过以下内容:

Maximum Call Stack Size Exceeded During a setTimeout Call

Uncaught RangeError: Maximum call stack size exceeded, JavaScript

因此,正如您所见,问题似乎是由于堆栈大小使用不当造成的。如果您还没有阅读更多关于此问题的详细信息以及可能的解决方案: Maximum call stack size exceeded error

我认为这与端口无关,更多的是与您交互/使用堆栈的方式中的方法/函数有关。

再一次,我可能错了。 ;D

【讨论】:

我已经知道 JavaScript 中的调用堆栈。我想知道的是为什么新版now.js会突然破坏现有代码。 是这个吗? ***.com/questions/10896167/… 不。没有为我工作。我正在使用最新的稳定版本 node v0.6.18。【参考方案3】:

now.js 有两个问题会产生此错误消息。希望其中一位能帮助您。

循环引用

您现在不能在传入的对象中包含任何循环引用,否则它的扩展方法将失败。对此进行了一些优化和解决方法,现在是 listed as an closed issue,但我遇到了。

只初始化一次

其次,你不能调用require('now').initialize(...) 两次,或者两个实例有a little intellectual conversation 并在堆栈中相互竞争。

我所做的是在 app.js 中创建 everyone 并将其传递给我所有需要引用现在的“口袋”的 require(...) 方法。

在 /app.js 中:

var conf = 
    everyone: require('now').initialize(app)
    port: 3000,
    // etc...
;

require('./routes')(conf)
// etc...

在路由/index.js 中:

module.exports = function(conf) 
   var everyone = conf.everyone;

   return 
       send: function() 
           everyone.now.clientFxn(...);
       
   

【讨论】:

++ 用于核动力参考,帮助解释您的答案

以上是关于Nowjs:[RangeError:超出最大调用堆栈大小]的主要内容,如果未能解决你的问题,请参考以下文章

RangeError:超出最大调用堆栈大小

猫鼬:UnhandledPromiseRejectionWarning:RangeError:超出最大调用堆栈大小

VueJS“RangeError:超出最大调用堆栈大小”

Node.js + mongoose [RangeError: 超出最大调用堆栈大小]

Rails:ExecJS :: ProgramError:RangeError:超出最大调用堆栈大小

Angular 5 表单组件导致错误:“RangeError:超出最大调用堆栈大小”