10

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

[RangeError: Maximum call stack size exceeded]
undefined

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

4

3 回答 3

8

嗯,如果 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;}

我希望它会帮助某人。它帮助了我。

于 2012-11-19T19:37:42.350 回答
5

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

在 setTimeout 调用期间超出最大调用堆栈大小

未捕获的 RangeError:超出最大调用堆栈大小,JavaScript

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

我认为它与端口没有任何关系,更多的是与您交互/使用堆栈的方式的方法/功能有关。

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

于 2012-06-05T16:53:24.300 回答
4

我有两个产生此错误消息的 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(...);
       }
   }
}
于 2012-06-10T04:19:51.790 回答