2017-10-13 7 views
0

Ich habe diese Funktion:Typeerror: res.Send ist keine Funktion

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); 
}) 

aus unbekannten Grund, warum ich die folgende Fehlermeldung erhalten:

TypeError: res.Send is not a function 

ich auf diesem Posten sah: https://stackoverflow.com/questions/44176021/nodejs-res-send-is-not-a-function

und es sieht wie andere Bugs aus.

Wie kann ich es beheben?

+0

Es gibt andere Dinge falsch mit diesem Code. Sie müssen warten, bis 'fs.readFile()' fertig ist, bevor Sie fortfahren, den 'counter' Wert zu verwenden. Sie müssen warten, bis 'fs.unlink()' fertig ist, bevor Sie 'fs.appendFile()' aufrufen, und Sie senden Ihre Antwort, bevor eine der beiden Aufgaben erledigt ist. Dieser Code zeigt ein völliges Unverständnis der asynchronen Operationen in node.js und wird nicht korrekt funktionieren. Unklar ist auch, dass 'counter' in Ihrer Datei eine Zeichenkette ist. In diesem Fall wird' counter + 1' wahrscheinlich nicht das tun, was Sie wollen. – jfriend00

+1

@ jfriend00 ist korrekt, der TypeError ist die geringste Ihrer Sorgen. Ihre 'readFile',' unlink', 'appendFile' werden alle ziemlich parallel ausgeführt. Willkommen in der Welt der asynchronen Programmierung. – Keith

+0

Und was ist das? 'If (err) if (err)'? – jfriend00

Antwort

4

TYPO

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

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

+0

Es gibt auch eine Menge anderer Dinge mit diesem Code falsch. Dies kann Interpreter-Ausnahmen verhindern, aber mehrere andere Dinge müssen behoben werden, bevor dieser Code tatsächlich funktioniert. – jfriend00

Verwandte Themen