J'espère que vous pourriez avoir pu m'aider s'il vous plaît dehors, je cours nœud.js et essaye d'obtenir un nom de ville à partir d'une API et qu'il conserve une erreur
en disant qu'il ne peut pas lire la propriété Il est bloqué sur cette ligne dans le code: p> city_name code> de non défini.
3 Réponses :
J'ai essayé de frapper l'API et la réponse: EDIT: strong>
Je ne fais pas votre code dans l'application avant, j'essaie par navigateur
de
Ceci est mycode p> météo.data code> est un tableau, donc lorsque vous essayez l'accès
météo.data.city_name code> être indéfini. Vous devez accéder à
temps météo.data [0] .City_name code>. P> p>
J'ai essayé cela et cela vient toujours avec la même erreur. const cityname = weatherdata.data [0] .City_name; ^ TypeError: Impossible de lire la propriété '0' de non définie
Désolé, j'ai essayé vos données du navigateur, pas du code de l'application, je vais essayer dans le code de la demande
Vos données sont une chaîne et donc ne dispose pas de ces propriétés. Vous auriez besoin de Mais il y a un autre problème, votre code va casser dès que plus de données sont renvoyées, car vous n'écoutez que pour une seule partie de données. Vous devez ajouter tous les morceaux (Ajouter aux morceaux existants sur chaque mais En général, la méthode JSON.PARSE CODE> IT PREMIER.
Data CODE> Event) et traiter les données complètes sur l'événement code> fin code>. P>
https.get code> est très nue, il sera beaucoup plus simple d'utiliser un package comme
NODE-FETCH code>
: P> // Creating the server of the weather app
const express = require('express');
const app = express();
const fetch = require('node-fetch')
app.get('/', (req, res) => {
const weatherPath = "https://api.weatherbit.io/v2.0/current?key=41c0f84d717a4764a26d144aa33a9443&city=melbourne,Australia"
// Calling the weather app
fetch(weatherPath)
.then(response => response.json())
.then(weatherData => {
// Getting the data from the weather app
const cityName = weatherData.data[0].city_name;
console.log(cityName);
}).catch(e => {
console.error('An error occured!', e);
});
res.send("The server is up and running on the web");
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Incroyable! Merci pour ça. A du sens maintenant. J'ai converti les données en une chaîne si dans la ligne de commande, elle ressemblait à un JSON. Juste besoin de convertir correctement. Merci pour la pointe sur le nœud de récupération, devez-la examiner cela plus. :RÉ
J'ai résolu avec le module de noeud d'avance utilisé communément appelé Axios
regarder Au code, P>
// Creating the server of the weather app const express = require('express'); const app = express(); const axios = require('axios'); app.get('/', (req, res) => { //In production we do not need this process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0; const weatherPath = "https://api.weatherbit.io/v2.0/current?key=41c0f84d717a4764a26d144aa33a9443&city=melbourne,Australia"; axios.get(weatherPath) .then(function (response) { // handle success let cityName = response.data.data[0].city_name; console.log(cityName); }) .catch(function (error) { // handle error console.log(error); }) .finally(function () { // always executed }); res.send("The server is up and running on the web"); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });