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:超出最大调用堆栈大小]的主要内容,如果未能解决你的问题,请参考以下文章
猫鼬:UnhandledPromiseRejectionWarning:RangeError:超出最大调用堆栈大小
Node.js + mongoose [RangeError: 超出最大调用堆栈大小]