/ / res.json nie jest funkcją w module Node.js - json, node.js, express

res.json nie jest funkcją w module Node.js - json, node.js, express

Próbuję skonfigurować Google Recaptcha za pomocą tego samouczka (https://codeforgeek.com/2016/03/google-recaptcha-node-js-tutorial/) i przenieś kod recaptcha do własnego modułu. Otrzymuję:

TypeError: res.json nie jest funkcją

w konsoli, gdy próbuję tego kodu:

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

Dlaczego to się dzieje? mam app.use(bodyParser.json()); ustawiony w mojej app.js i res.json() wydaje się działać dobrze w innych częściach mojej aplikacji, tylko nie w tym module recaptcha.

Odpowiedzi:

1 dla odpowiedzi № 1

W oparciu o użycie oprogramowania pośredniego nie przechodzisz res do funkcji, ale zamiast tego wywołanie zwrotne (i checkRecaptcha() nie ma parametru wywołania zwrotnego, ponieważ odpowiada bezpośrednio na żądanie).

Spróbuj zamiast tego:

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

lub bardziej prosto:

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