2012-05-31 126 views
10

當我開始在端口8080服務器時,它並沒有給我一個錯誤,但是當我試圖瀏覽http://localhost:8080/nowjs/now.js服務器引發錯誤:Nowjs:[引發RangeError:最大調用堆棧大小超出]

[RangeError: Maximum call stack size exceeded]
undefined

我試過與socket.io相同,它工作正常。

+0

看到這個http://javascriptrules.com/2009/06/30/limitation-on-call-stacks/ –

+0

有相同的問題 –

+0

你可以包含一些代碼示例,甚至是一個重現問題的小提琴嗎?如果在這個過程中沒有找到源代碼,那麼也許我們可以發現它:) – Kato

回答

5

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

+0

我已經知道JavaScript中的調用堆棧。我想知道的是爲什麼新版本的'now.js'突然破壞了現有的代碼。 –

+0

這是嗎? http://stackoverflow.com/questions/10896167/nowjs-running-node-and-nowjs-on-a-hosted-server-error-maximum-call-stack-s –

+0

沒有。沒有爲我工作。我正在使用最新的穩定版本v0.6.18。 –

4

我有兩個問題與now.js產生此錯誤消息。希望他們中的一個能幫助你。

循環引用

不能包括傳入對象的任何循環引用,現在,還是它的擴展方法BARF。有一些優化和解決方法,現在它是listed as an closed issue,但我碰到它。

初始化()只有一次

其次,你可能不叫require('now').initialize(...)兩次或兩個實例有a little intellectual conversation和種族互相右出棧。

我所做的是在app.js中創建everyone,並將其傳遞到需要引用現在「pocket」的所有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(...); 
     } 
    } 
} 
+0

++爲nuklearpower參考幫助解釋您的答案 – Seiyria

6

嗯,如果now.js使用date.js,也許您的問題就在於here。鏈接說的是date.js嘗試將toString設置爲Date原型,但是當toString已經定義時,您會得到在其他答案中提到的循環引用

基本上,他們說在日期。JS,你改變

Date.prototype._toString=Date.prototype.toString 

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

我希望這會幫助別人。它幫助了我。

+1

這救了我!它效果很好。謝謝。 –

+1

你是上帝!謝謝 –

相關問題