/ / res.json ist keine Funktion im Node.js-Modul - json, node.js, express

res.json ist keine Funktion im Node.js-Modul - json, node.js, express

Ich versuche, Google Recaptcha mithilfe dieses Tutorials einzurichten (https://codeforgeek.com/2016/03/google-recaptcha-node-js-tutorial/) und verschiebe den Recaptcha-Code in das eigene Modul. Ich bekomme:

TypeError: res.json ist keine Funktion

in der Konsole, wenn ich diesen Code versuche:

var checkRecaptcha = function(req, res){
// g-recaptcha-response is the key that browser will generate upon form submit.
// if its blank or null means user has not selected the captcha, so return the error.

if(req.body["g-recaptcha-response"] === undefined || req.body["g-recaptcha-response"] === "" || req.body["g-recaptcha-response"] === null) {
return res.json({"responseCode" : 1,"responseDesc" : "Please select captcha"});
}

// Put your secret key here.
var secretKey = "************";

// req.connection.remoteAddress will provide IP address of connected user.
var verificationUrl = "https://www.google.com/recaptcha/api/siteverify?secret=" + secretKey + "&response=" + req.body["g-recaptcha-response"] + "&remoteip=" + req.connection.remoteAddress;

// Hitting GET request to the URL, Google will respond with success or error scenario.
var request = require("request");
request(verificationUrl,function(error,response,body) {

body = JSON.parse(body);
// Success will be true or false depending upon captcha validation.
if(body.success !== undefined && !body.success) {
return res.json({"responseCode" : 1,"responseDesc" : "Failed captcha verification"});
}
return res.json({"responseCode" : 0,"responseDesc" : "Sucess"});
});
}

module.exports = {checkRecaptcha};

Warum passiert das? Ich habe app.use(bodyParser.json()); in meiner app.js und setzen res.json() scheint in anderen Teilen meiner App gut zu funktionieren, nur nicht in diesem Recaptcha-Modul.

Antworten:

1 für die Antwort № 1

Aufgrund Ihrer Verwendung der Middleware werden Sie nicht bestanden res auf die Funktion, sondern einen Rückruf (und checkRecaptcha() hat keinen Rückrufparameter, da er direkt auf die Anfrage reagiert).

Versuchen Sie es stattdessen:

app.post("/login", function(req, res) {
var recaptcha = require("./recaptcha");
recaptcha.checkRecaptcha(req, res);
});

oder einfacher:

app.post("/login", require("./recaptcha"));