2012-05-31 13 views
10

Wenn ich den Server auf Port 8080 starten es keinen Fehler geben Sie mir, aber wenn ich versuche, die http://localhost:8080/nowjs/now.js der Server löst einen Fehler zu durchsuchen:Nowjs: [Auslöser Range: Maximale Call-Stack-Größe überschritten]

[RangeError: Maximum call stack size exceeded]

Ich versuchte das gleiche mit socket.io und es hat gut funktioniert.

+0

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

+0

mit dem gleichen Problem –

+0

Könnten Sie einige Code-Beispiele oder sogar eine Geige, die das Problem reproduzieren? Wenn Sie die Quelle im Prozess nicht finden, dann könnten wir es vielleicht entdecken :) – Kato

Antwort

5

Aadit, haben Sie die folgenden lesen:

Maximum Call Stack Size Exceeded During a setTimeout Call

Uncaught RangeError: Maximum call stack size exceeded, JavaScript

So, wie Sie das Problem sehen kann scheint wegen der nicht bestimmungsgemäßer Verwendung von Stapelgrößen zu ergeben. Wenn Sie nicht bereits haben, können Sie ein bisschen mehr über dieses Problem im Detail hier zusammen mit einer möglichen Lösung lesen: Maximum call stack size exceeded error

Ich glaube nicht, dass irgendetwas mit dem Hafen zu tun hat, mehr mit den Methoden/funktioniert in der Art und Weise, wie Sie interagieren/den Stack verwenden.

Dann wieder kann ich falsch liegen. ; D

+0

Ich kenne bereits Call-Stacks in JavaScript. Was ich wissen wollte, war, warum die neue Version von 'now.js 'den vorhandenen Code plötzlich kaputt machte. –

+0

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

+0

Nein. Hat nicht für mich gearbeitet. Ich benutze Knoten v0.6.18, die neueste stabile Version. –

4

Ich hatte zwei Probleme mit now.js, die diese Fehlermeldung erzeugen. Hoffentlich wird einer von ihnen dir helfen.

Kreis Referenzen

Sie können keine zirkulären Referenzen in Objekte enthalten in vergangen, oder es ist zu verlängern Methode barf wird. Es gab einige Optimierungen und Problemumgehungen für dieses und es ist jetzt listed as an closed issue, aber ich bin hineingelaufen.

initialize() nur einmal

Zweitens kann man nicht require('now').initialize(...) zweimal anrufen oder die beiden Instanzen haben a little intellectual conversation und Rennen sich direkt aus dem Stapel.

Was ich stattdessen getan habe, war everyone in app.js zu erstellen und es in alle meine erfordern (...) Methoden, die auf die jetzt "Tasche" verweisen müssen.

In /app.js:

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

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

In Routen/index.js:

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

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

++ für die nuklearpower referenz hilft erklären ihre antwort – Seiyria

6

Hmm, wenn now.js date.js verwendet, vielleicht Ihr Problem liegt here. Was der Link sagt ist, dass date.js versucht, einen toString to Date-Prototyp zu setzen, aber wenn toString bereits definiert ist, erhalten Sie die Kreisreferenz in den anderen Antworten erwähnt.

Grundsätzlich sagen sie, dass in Datum.js, Sie ändern

Date.prototype._toString=Date.prototype.toString 

zu

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

Ich hoffe, dass es jemand helfen. Es hat mir geholfen.

+1

Das hat mich gerettet! Es funktioniert großartig. Vielen Dank. –

+1

Du bist ein GOTT! Vielen Dank –

Verwandte Themen