Node.js - превышен максимальный размер стека вызовов - vm.runInNewContext - PullRequest
0 голосов
/ 10 мая 2018

Я получаю сообщение об ошибке «RangeError: Превышен максимальный размер стека вызовов» при запуске определенного пользовательского кода в vm.runInNewContext на каждой итерации цикла (предоставленной пользователем).

Я проверил эту проблему в StackOverflow (ссылка Node.js - превышен максимальный размер стека вызовов ), и оттуда я обнаружил, что мы должны заключить вызов функции в setImmediate или process.nextTick. Но весь мой код проекта обещан.

Может ли кто-нибудь помочь здесь для любого возможного решения для этого?

Спасибо!

1 Ответ

0 голосов
/ 10 мая 2018

Maximum call stack size exceeded почти всегда означает, что у вас есть проблема с рекурсией в коде JavaScript, поскольку в JavaScript нет другого способа использовать много стека. Вы можете локализовать проблему, установив точку останова для типа исключения RangeError, а затем соответствующим образом скорректируйте код.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...