Bonjour lostsoul,
plusieurs problèmes dans ton scripts:
1 2
| module.exports.result = result;
module.exports.text = text; |
module.exports ne peut être appeler qu'une seul fois, et ne sert pas à renvoyer un résultat de fonction, mais à exporter la fonction elle même pour que tu puisse l'appeler dans d'autres fichiers via un require.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
// toto.js
function toto (callback) {
return callback(null, 'j\'ai une blague');
}
module.exports = toto;
// tata.js
var toto = require('./toto.js');
toto(function(err, res) {
if (err) throw err;
console.log(res);
}); |
je t'invite d'ailleurs à chercher un peu sur la différence entre module.exports et exports.foo, sujet traité mille fois sur le net (et la flemme de tout réécrire
)
autre problème conceptuel, tu essaye de renvoyer le resultat d'un callback en dehors de celui ci. je pense à 'result' et 'text' dans request. Tes resultats, tu doit en faire quelque chose dans :
function (error, response, resp) { /* ici, car en dehors ils n'existent pas */ }
soit simplement l'afficher dans la console comme tu le fais, soit renvoyer ces valeurs via un callback
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
function openWeatherMap (callback) {
var querystring = require('querystring');
var request = require("request");
var result = '';
var text = '';
var openWeatherMapQuery = querystring.stringify({
q: "Bourges, France",
lang: "fr",
units: "metric"
});
var openWeatherMapURL = "http://api.openweathermap.org/data/2.5/weather?"+ openWeatherMapQuery;
request({
url: openWeatherMapURL,
json: true // Nous recevrons un JSON
}, function (error, response, resp) {
if (error) return callback(err);
if (!error && response.statusCode === 200) {
var text = "Bulletin météo : "
text += resp.weather[0].description
text += ". Il fait actuellement "+ Math.round(resp.main.temp) +" degrés."
var result = querystring.stringify({
tl: "fr",
q: text,
ie: "UTF-8"
});
console.log("Météo construite :");
console.log(text);
console.log(resp.main.temp);
callback(null, text, resp.main.temp);
} else {
console.log("Une erreur est survenue.");
callback(new Error("Une erreur est survenue."));
}
})
});
module.exports = openWeatherMap; |
voila en trés gros...
Est-ce qu'un npm serait mieux ?
lapin compris!
Clairement, tu débute avec node.js, c'est pourquoi je t'invite à ne pas te décourager et à revoir la notion de callback et d'asynchronicité.
Partager