2012-05-31 9 views
10

Kiedy uruchomić serwer na porcie 8080 nie daje mi błąd, ale gdy próbuję przeglądać http://localhost:8080/nowjs/now.js serwer zgłosi błąd:Nowjs: [RangeError: Maksymalny rozmiar stosu wywołań przekroczyła]

[RangeError: Maximum call stack size exceeded]
undefined

Próbowałem tego samego z socket.io i działało dobrze.

+0

zobacz http://javascriptrules.com/2009/06/30/limitation-on-call-stacks/ –

+0

o tym samym numerze –

+0

Czy możesz dołączyć próbki kodu, a nawet skrzypce, które odwzorowują problem? Jeśli nie znajdziesz źródła w procesie, to może moglibyśmy go dostrzec :) – Kato

Odpowiedz

5

Aadit, masz przeczytać:

Maximum Call Stack Size Exceeded During a setTimeout Call

Uncaught RangeError: Maximum call stack size exceeded, JavaScript

Więc jak widać ten problem wydaje się być powstałe z powodu niewłaściwego wykorzystania wielkości stosu. Jeśli nie masz już można przeczytać nieco więcej o tym problemie w szczegółach tutaj wraz z możliwego rozwiązania: Maximum call stack size exceeded error

I nie sądzę, że nie ma nic wspólnego z portem, bardziej z metodami/działa w taki sposób, w jaki wchodzisz w interakcje/używasz stosu.

Potem znowu mogę się mylić. ; D

+0

Już wiem o stosach połączeń w JavaScript. Chciałem się dowiedzieć, dlaczego nowa wersja 'now.js' nagle złamała istniejący kod. –

+0

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

+0

Nie. Nie działa dla mnie. Używam węzła v0.6.18, który jest najnowszą stabilną wersją. –

4

Mam dwa problemy z plikiem show.js, który generuje ten komunikat o błędzie. Mam nadzieję, że jedno z nich ci pomoże.

okrągłe Referencje

nie mogą zawierać żadnych odniesień w okrągłych przedmiotów przekazanych do teraz, czy to przedłużyć metoda będzie barf. Były pewne optymalizacje i obejścia tego problemu i teraz jest to listed as an closed issue, ale mam do niego dostęp.

initialize() tylko raz

Po drugie, nie można nazwać require('now').initialize(...) dwa lub dwa przypadki mają a little intellectual conversation i wyścig wzajemnie prosto z komina.

Zamiast tego stworzyłem everyone w app.js i przekazałem go do wszystkich moich potrzebnych (...) metod, które muszą się odnosić do "kieszeni" teraz.

W /app.js:

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

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

na drogach/index.js:

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

    return { 
     send: function() { 
      everyone.now.clientFxn(...); 
     } 
    } 
} 
+0

++ za odniesienie do programu Pirarpower pomaga wyjaśnić odpowiedź – Seiyria

6

Hmm, jeśli now.js wykorzystuje date.js, może twój problem polega here. Z linku wynika, że ​​data.js próbuje ustawić prototyp toString to Date, ale gdy toString jest już zdefiniowane, w innych odpowiedziach pojawia się kołowy odnośnik.

Zasadniczo mówią o tym w terminie.js, zmienić

Date.prototype._toString=Date.prototype.toString 

do

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

Mam nadzieję, że komuś pomóc. Pomogło mi to.

+1

To mnie uratowało! Działa świetnie. Dziękuję Ci. –

+1

Jesteś Bogiem! Dziękuję Ci –

Powiązane problemy