Я пишу простой скрипт сборки, который компилирует некоторые файлы.Единственная оставшаяся проблема - обработка ошибок.Это работает, но я хочу добавить дополнительный контент к сообщениям об ошибках.Вот фрагмент кода, о котором идет речь:
const promises = []
for (let file of files) {
promises.push(Promise.all([exec(compile(file)), Promise.resolve(file)]))
}
Promise.all(promises.map(p => p.catch(e => console.log(e))))
.then(result => {
/* result is now an array with the following pattern:
[[stdout, filename], [stdout, filename], ...]
*/
});
Функция exec
возвращает некоторые stdout
данные, которые не указывают, какой файл использовался.Поэтому я добавил Promise.all
, содержащий как функцию exec, так и обещание, которое немедленно разрешает и возвращает имя файла.Мне нужны данные, возвращаемые из exec, и имя файла, когда мне нужно записать файлы в систему.Поскольку я все еще хочу, чтобы последний then
работал независимо от каких-либо ошибок, я обрабатываю ошибки для каждого файла отдельно (отсюда .map
).Единственная проблема заключается в том, что stdout
из exec
не ссылается на используемый файл.Так что сообщения об ошибках запутываются.Я хотел бы что-то вроде следующего:
p.catch(e => console.log(`error happened in ${file}:`, e))
Я не уверен, как я могу получить доступ к переменной файла из catch
.Есть идеи?