Maximum call stack size exceeded
почти всегда означает, что у вас есть проблема с рекурсией в коде JavaScript, поскольку в JavaScript нет другого способа использовать много стека.
Вы можете локализовать проблему, установив точку останова для типа исключения RangeError
, а затем соответствующим образом скорректируйте код.
Я вижу, что вы уже решили проблему, тем не менее, поскольку ответ, с которым вы связались, объясняет, возможно также вызвать бесконечную рекурсию в полностью обещанном коде. Это может произойти, если обещания в цепочке фактически не выполняют асинхронного выполнения, и в этом случае управление никогда не возвращается в цикл обработки событий, даже если код, в противном случае выглядит как , как асинхронный. Именно тогда полезно обернуть вызовы в setImmediate
или process.nextTick
.