Nowjs: [RangeError: максимальный размер стека вызовов]
Когда я запускаю сервер на порту 8080, он не дает мне ошибку, но когда я пытаюсь просмотреть http://localhost:8080/nowjs/now.js
, сервер вызывает ошибку:
[RangeError: Maximum call stack size exceeded]
undefined
Я пробовал то же самое с socket.io, и он работал нормально.
Ответы
Ответ 1
Хмм, если now.js использует date.js, может быть, ваша проблема здесь. Что ссылка говорит, что date.js пытается установить прототип toString to Date, но когда toString уже определена, вы получите круглую ссылку, упомянутую в других ответах.
В основном, говорят, что в date.js вы меняете
Date.prototype._toString=Date.prototype.toString
к
if(Date.prototype._toString==undefined) {Date.prototype._toString=Date.prototype.toString;}
Я надеюсь, что это поможет кому-то. Это помогло мне.
Ответ 2
Aadit, прочитали ли вы следующее:
Максимальный размер стека вызовов во время вызова setTimeout
Uncaught RangeError: превышен максимальный размер стека вызовов, JavaScript
Итак, как вы видите, проблема, похоже, возникает из-за неправильного использования размеров стека. Если вы еще этого не знаете, вы можете прочитать здесь подробнее об этой проблеме, а также возможное решение:
Максимальный размер стека стека превысил ошибку
Я не думаю, что это имеет какое-то отношение к порту, больше с методами/функциями в том, как вы взаимодействуете/используете стек.
И снова я могу ошибаться.; D
Ответ 3
У меня возникли две проблемы с now.js, которые вызывают это сообщение об ошибке. Надеюсь, один из них поможет вам.
Циркулярные ссылки
Вы не можете включать любые циклические ссылки в объекты, переданные в настоящее время, или метод расширения barf. Были некоторые оптимизации и обходные пути для этого, и теперь указан как закрытый вопрос, но я столкнулся с этим.
инициализировать() только один раз
Во-вторых, вы не можете дважды называть require('now').initialize(...)
или два экземпляра немного интеллектуального разговора и раскачивать друг друга прямо из стека.
Вместо этого я создал everyone
в app.js и передал его во все мои требования (...), которые должны ссылаться на теперь "карман".
В/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(...);
}
}
}