J'ai cette fonction:TypeError: res.Send est pas une fonction
app.get('/counter', function (req, res) {
console.log('/counter Request');
var counter = 0;
fs.readFile(COUNTER_FILE_NAME, function(err, data) {
counter = data;
});
console.log('Read Counter: ' + counter);
counter = counter + 1;
// delete old file
fs.unlink(COUNTER_FILE_NAME, function (err) {
if (err) console.log('Cant chagne old counter file');
});
fs.appendFile(COUNTER_FILE_NAME, counter, function (err) {
if (err) if (err) console.log('Cant create new counter file');
});
console.log('Change Counter To: ' + counter);
res.status(200);
res.writeHead('content-type','text/plain')
res.Send(counter);
})
pour une raison inconnue, je reçois l'erreur suivante:
TypeError: res.Send is not a function
Je regardais ce poste: https://stackoverflow.com/questions/44176021/nodejs-res-send-is-not-a-function
et il ressemble à un autre bug.
Comment puis-je résoudre ce problème?
Il y a d'autres mauvaises choses avec ce code. Vous devez attendre que 'fs.readFile()' soit terminé avant d'utiliser la valeur 'counter'. Vous devez attendre que 'fs.unlink()' soit terminé avant d'appeler 'fs.appendFile()' et vous envoyez votre réponse avant que l'une des deux ne soit terminée. Ce code montre un manque total de compréhension des opérations asynchrones dans node.js et cela ne fonctionnera pas correctement. On ne sait pas non plus si 'counter' dans votre fichier est une chaîne, auquel cas' counter + 1' ne fera probablement pas ce que vous voulez. – jfriend00
@ jfriend00 est correct, le TypeError est le moindre de vos soucis. Vos 'readFile',' unlink', 'appendFile', vont tous être exécutés à peu près en parallèle. Bienvenue dans le monde de la programmation asynchrone. – Keith
Aussi, qu'est-ce que c'est: 'if (err) if (err)'? – jfriend00