当我在端口 8080 上启动服务器时,它不会给我一个错误,但是当我尝试浏览http://localhost:8080/nowjs/now.js
服务器时会引发一个错误:
[RangeError: Maximum call stack size exceeded]
undefined
我对 socket.io 进行了同样的尝试,并且效果很好。
当我在端口 8080 上启动服务器时,它不会给我一个错误,但是当我尝试浏览http://localhost:8080/nowjs/now.js
服务器时会引发一个错误:
[RangeError: Maximum call stack size exceeded]
undefined
我对 socket.io 进行了同样的尝试,并且效果很好。
嗯,如果 now.js 使用 date.js,也许你的问题就在这里。该链接所说的是 date.js 尝试将 toString 设置为 Date 原型,但是当 toString 已经定义时,您会得到其他答案中提到的循环引用。
基本上,他们说在 date.js 中,你改变了
Date.prototype._toString=Date.prototype.toString
至
if(Date.prototype._toString==undefined) {Date.prototype._toString=Date.prototype.toString;}
我希望它会帮助某人。它帮助了我。
Aadit,您是否阅读过以下内容:
未捕获的 RangeError:超出最大调用堆栈大小,JavaScript
因此,正如您所见,问题似乎是由于堆栈大小使用不当造成的。如果您还没有,您可以在此处详细阅读有关此问题的更多信息以及可能的解决方案: Maximum call stack size exceeded 错误
我认为它与端口没有任何关系,更多的是与您交互/使用堆栈的方式的方法/功能有关。
再说一次,我可能错了。;D
我有两个产生此错误消息的 now.js 问题。希望其中之一对您有所帮助。
循环引用
您不能在现在传入的对象中包含任何循环引用,否则它的扩展方法将失败。对此进行了一些优化和解决方法,现在它被 列为已解决的问题,但我遇到了它。
初始化()只有一次
其次,您可能不会调用require('now').initialize(...)
两次,或者两个实例进行了一些智力对话,并在堆栈中相互竞争。
我所做的是everyone
在 app.js 中创建并将其传递给我所有需要引用现在的“口袋”的 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(...);
}
}
}