узел js обещает отладку

#node.js #debugging #promise

Вопрос:

С прошлого раза, node.js просто закройте процесс с ненулевым кодом, если произошло необработанное отклонение обещания. Отлаживать код вообще невозможно. Даже если добавить обработчик неперехваченных исключений, вы не увидите ошибок на том месте, где они возникли.

Есть ли какой-либо способ заставить узел останавливаться при ошибках при подключении отладчика?

В противном случае узел, развивающийся с обещаниями, превращается в ад гораздо больше, чем это было с обратными вызовами.

Комментарии:

1. Как вы это отлаживаете? Если вы используете VS-код, есть возможность установить точку останова для каждого (неперехваченного) исключения, которое iirc также учитывает отклонение обещаний с фактической ошибкой или без нее.

2. Я попробовал vscode, и я попробовал crome-devtool, бот из них с включенными «перерыв при пойманных» и «перерыв при неперехваченных отрывках». Ничто не могло привести к обману в обещаниях нарушить отладку.

3. Ха, это странно. У меня никогда не было проблемы с неиспользованными обещаниями, выходящими из процесса, с подключенным обработчиком или отладчиком исключений или без него. Вы уверены, что в вашем коде нет какой-то вызывающей части process.exit ?

4. Начиная с узла v15, поведение по умолчанию заключается в том, что неперехваченные отклонения обещаний приводят к завершению процесса. Я не знаю ответа на этот вопрос, но одна вещь, которая может помочь, — это вернуться к старому поведению во время отладки, запустив узел с --unhandled-rejections=warn