Estoy usando un bucle para obtener todos los mensajes de WhatsApp asociados con números dados, usando whatsappweb-js. Cuando hay un error en esta línea "let chat = await client.getChatById(nums[i])" no puedo detectarlo, en su lugar aparece un error en la siguiente línea que indica que "chat is not added" (el chat no está definido). si elimino try catch, no obtengo ningún error, pero la aplicación node js simplemente deja de responder nota: client.getChatById (id) devuelve una promesa que contiene el objeto de chat.
function fetch(nums) { for (let i = 0; i < nums.length; i++) { try { let chat = await client.getChatById(nums[i]) } catch (err) { console.log(err) }; } return msgs = await chat.fetchMessages(); }El código que usa el chat debe estar dentro del bloque de try . Esto es necesario por razones de alcance y también porque no tiene sentido usar el chat si la llamada falla.
Además, no debería tener return dentro del ciclo, ya que desea recopilar los resultados de todos los chats. Declare una matriz para contenerlos, agregue a la matriz en el ciclo y luego regrese al final.
async function fetch(nums) { let msgs = []; for (let i = 0; i < nums.length; i++) { try { let chat = await client.getChatById(nums[i]); msgs = msgs.concat(await chat.fetchMessages()); } catch (err) { console.log(`while fetching ${nums[i]}`, err) }; } return msgs; }Necesitas mover la devolución:
function fetch(nums) { for (let i = 0; i < nums.length; i++) { try { let chat = await client.getChatById(nums[i]) return msgs = await chat.fetchMessages(); } catch (err) { console.log(err) }; } Está poniendo su variable de chat fuera de try/catch, por lo que no sabría cuál es la variable.