/ / res.json n'est pas une fonction du module Node.js - json, node.js, express

res.json n'est pas une fonction du module Node.js - json, node.js, express

J'essaie de configurer google recaptcha à l'aide de ce didacticiel (https://codeforgeek.com/2016/03/google-recaptcha-node-js-tutorial/) et déplacer le code recaptcha dans son propre module. J'obtiens:

TypeError: res.json n'est pas une fonction

dans la console lorsque j'essaie ce code:

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

Pourquoi cela arrive-t-il? j'ai en effet app.use(bodyParser.json()); définir dans mon app.js et res.json() semble bien fonctionner dans d'autres parties de mon application, mais pas dans ce module recaptcha.

Réponses:

1 pour la réponse № 1

En fonction de votre utilisation du middleware, vous ne passez pas res à la fonction, mais à la place un rappel (et checkRecaptcha() n'a pas de paramètre de rappel car il répond directement à la demande).

Essayez plutôt ceci:

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

ou plus simplement:

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