2017-10-13 5 views
0

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?

+0

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

+1

@ 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

+0

Aussi, qu'est-ce que c'est: 'if (err) if (err)'? – jfriend00

Répondre

4

TYPO

res.Send(counter); =>res.send(counter);

https://expressjs.com/en/api.html#res.send

+0

Il y a aussi plein d'autres choses qui ne vont pas avec ce code. Cela peut empêcher les exceptions d'interpréteur, mais plusieurs autres choses doivent être corrigées avant que ce code ne fonctionne réellement. – jfriend00