#node.js #debugging #promise
Вопрос:
С прошлого раза, node.js просто закройте процесс с ненулевым кодом, если произошло необработанное отклонение обещания. Отлаживать код вообще невозможно. Даже если добавить обработчик неперехваченных исключений, вы не увидите ошибок на том месте, где они возникли.
Есть ли какой-либо способ заставить узел останавливаться при ошибках при подключении отладчика?
В противном случае узел, развивающийся с обещаниями, превращается в ад гораздо больше, чем это было с обратными вызовами.
Комментарии:
1. Как вы это отлаживаете? Если вы используете VS-код, есть возможность установить точку останова для каждого (неперехваченного) исключения, которое iirc также учитывает отклонение обещаний с фактической ошибкой или без нее.
2. Я попробовал vscode, и я попробовал crome-devtool, бот из них с включенными «перерыв при пойманных» и «перерыв при неперехваченных отрывках». Ничто не могло привести к обману в обещаниях нарушить отладку.
3. Ха, это странно. У меня никогда не было проблемы с неиспользованными обещаниями, выходящими из процесса, с подключенным обработчиком или отладчиком исключений или без него. Вы уверены, что в вашем коде нет какой-то вызывающей части
process.exit
?4. Начиная с узла v15, поведение по умолчанию заключается в том, что неперехваченные отклонения обещаний приводят к завершению процесса. Я не знаю ответа на этот вопрос, но одна вещь, которая может помочь, — это вернуться к старому поведению во время отладки, запустив узел с
--unhandled-rejections=warn