2012-05-31 14 views
10

Cuando inicio el servidor en el puerto 8080 que no me da un error, pero cuando estoy tratando de navegar por la http://localhost:8080/nowjs/now.js el servidor genera un error:Nowjs: [RangeError: El tamaño máximo de pila de llamadas superó]

[RangeError: Maximum call stack size exceeded]
undefined

Intenté lo mismo con socket.io y funcionó bien.

+0

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

+0

teniendo el mismo problema –

+0

¿Podría incluir algunas muestras de código o incluso un violín que reproduzca el problema? Si no encuentra la fuente en el proceso, entonces quizás podamos detectarla :) – Kato

Respuesta

5

Aadit, tiene que leer la siguiente:

Maximum Call Stack Size Exceeded During a setTimeout Call

Uncaught RangeError: Maximum call stack size exceeded, JavaScript

tanto, como se puede ver el problema parece ser que surge debido a la un uso indebido de la cantidad de fichas. Si usted no tiene ya que puede leer un poco más acerca de este problema en detalle aquí, junto con una solución posible: Maximum call stack size exceeded error

no creo que tenga nada que ver con el puerto, más con los métodos/funciona de la manera en que estás interactuando/usando la pila.

Por otra parte, puedo estar equivocado. ; D

+0

Ya sé acerca de las pilas de llamadas en JavaScript. Lo que quería saber es por qué la nueva versión de 'now.js' de repente rompe el código existente. –

+0

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

+0

Nope. No funcionó para mí Estoy usando el nodo v0.6.18 que es la última versión estable. –

4

He tenido dos problemas con now.js que producen este mensaje de error. Con suerte, uno de ellos te ayudará.

referencias circulares

no puede incluir ninguna referencia circular en objetos pasado a ahora, o es extender método vomitar. Hubo algunas optimizaciones y soluciones para esto y ahora es listed as an closed issue, pero me he topado con él.

initialize() sólo una vez

En segundo lugar, es posible que no llame require('now').initialize(...) dos o los dos casos tienen a little intellectual conversation y raza entre sí a la derecha de la pila.

Lo que hice en su lugar fue crear everyone en app.js y pasarlo a todos mis métodos necesarios (...) que necesitan hacer referencia al ahora "bolsillo".

En /app.js:

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

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

En rutas/index.js:

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

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

++ para la referencia nuklearpower ayudando a explicar su respuesta – Seiyria

6

Hmm, si now.js utiliza date.js, tal vez el problema radica here. Lo que dice el enlace es que date.js intenta establecer un prototipo toString to Date, pero cuando toString ya está definido, obtiene la referencia circular mencionada en las otras respuestas.

Básicamente, dicen eso en la fecha.js, cambia

Date.prototype._toString=Date.prototype.toString 

a

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

espero que ayude a alguien. Me ayudó.

+1

¡Esto me salvó! Funciona muy bien. Gracias. –

+1

¡Eres un DIOS! Gracias –

Cuestiones relacionadas