async function cap2 () {
       const r = await fetch ('https://restcountries.com/v3.1/name/france')
        if (r.ok === true){
          return r.json();
        }
        throw new Error ('impossible de contacter le serveur ')
        document.querySelector('#result').src=r.headers

      }

      fichier fonction : 

      const fetch = require('node-fetch');

async function getcap() {
    await fetch(`https://restcountries.com/v3.1/name/spain`)
    .then(res => res.json())
    .then(data => console.log(data));

}

module.exports = { getcap }

Ce que je veux

Depuis un client , je cherche a envoyer une requete dont le chemin fait appel a une fonction contenant un fetch vers une API , puis j'essaye de récupérer la réponse pour l'afficher dans le client

Ce que j'obtiens

(node:14735) UnhandledPromiseRejectionWarning: Unhandled promise rejection.

2 réponses


Pour information , je suis novice , j'aimerai de l'aide car je suis dépassé

Hello :)

Ton appel est isolé dans une fonction, mais il faut le retourner à la fin, sinon il reste coincé, le return du then exporte uniquemment le json de la callback "then", mais pas de la fonction getcap

async function getcap() {
    const response = await fetch(`https://restcountries.com/v3.1/name/spain`)
    .then(res => res.json()) // Retires le console.log, sinonta function va retourner la réponse de console.log au lieux de retourner le json

    console.log(response) // Tu peux ajouter le console.log ici vu que le résultat du fetch est enregistré dans la variable "response"

    return response
}

Sinon le const fetch = require('node-fetch'); si tu es sur nodejs tu ne devrais pas avoir besoin d'ajouter cette lib, sauf si tu es dans une vieille version de nodejs qui n'a pas encore intégré fetch (il a été intégré dans la version 17.5, et est stable dans la version 18)