Javascript ReferenceError:未定义我的变量

Javascript ReferenceError:未定义我的变量,javascript,node.js,Javascript,Node.js,我正在开发一个用于测试NodeJS的应用程序。 登录和注册系统。 因此,我测试用于注册的用户数据是否不在数据库中 但它在电子邮件上不起作用。 我有一个错误: ReferenceError: mailDispo is not defined at /var/www/app.js:72:12 at Layer.handle [as handle_request] (/var/www/node_modules/express/lib/router/layer.js:82:5)

我正在开发一个用于测试NodeJS的应用程序。 登录和注册系统。 因此,我测试用于注册的用户数据是否不在数据库中

但它在电子邮件上不起作用。 我有一个错误:

    ReferenceError: mailDispo is not defined
   at /var/www/app.js:72:12
   at Layer.handle [as handle_request] (/var/www/node_modules/express/lib/router/layer.js:82:5)
   at next (/var/www/node_modules/express/lib/router/route.js:110:13)
   at Route.dispatch (/var/www/node_modules/express/lib/router/route.js:91:3)
   at Layer.handle [as handle_request] (/var/www/node_modules/express/lib/router/layer.js:82:5)
   at /var/www/node_modules/express/lib/router/index.js:267:22
   at Function.proto.process_params (/var/www/node_modules/express/lib/router/index.js:321:12)
   at next (/var/www/node_modules/express/lib/router/index.js:261:10)
   at /var/www/node_modules/body-parser/lib/read.js:107:5
   at IncomingMessage.onEnd (/var/www/node_modules/body-parser/node_modules/raw-body/index.js:136:7)
但是如果我重新加载页面,尽管在我看来这是一个错误,因为电子邮件已经在使用中! 一个主意

哎呀,我忘了密码了:

  var express = require('express');
var body = require('body-parser');
var render = require('ejs');
var app = express();

var mysql = require('mysql');

var mySqlClient = mysql.createConnection({
    host: "localhost",
    user: "******",
    password: "*******!",
    database: "******"
});
app.use(body.json()); // to support JSON-encoded bodies
app.use(body.urlencoded({// to support URL-encoded bodies
    extended: true
}));


app.get('/', function (request, response) {
    var selectQuery = 'SELECT * FROM user';

    var sqlQuery = mySqlClient.query(selectQuery);

    sqlQuery.on("result", function (row) {
        console.log('pseudo: ' + row.pseudo);
        console.log('mail: ' + row.mail);
    });

    sqlQuery.on("end", function () {
        mySqlClient.end();
    });

    sqlQuery.on("error", function (error) {
        console.log(error);
    });
    response.sendfile('html/index.html');
});


app.get('/signup', function (request, response) {
    response.render('signup.ejs', {
        titre: 'Inscription sur War.io'
    });
});
//Inscription
app.post('/signup', function (request, response) {
    var pseudo = request.body.pseudo;
    var mail = request.body.mail;
    var password = request.body.password;
    var checkMail = "select id from user where mail=" + mysql.escape(mail);
    sqlQueryMail = mySqlClient.query(checkMail);
    sqlQueryMail.on("result", function (row) {
        if (row.id) {
            mailDispo = 0;
            errorMail = "Adresse email deja use";
        } else {
           mailDispo = 1;
        }
     });

        var checkUser = "select id from user where pseudo=" + mysql.escape(pseudo);
        sqlQueryUser = mySqlClient.query(checkUser);
        sqlQueryUser.on("result", function (row) {
            if (row.id) {
               pseudoDispo = 0;
               errorPseudo = "Pseudo deja use";            
            } else {
               pseudoDispo = 1;
            }
        });
        if(mailDispo == 1 &&  pseudoDispo == 1){
            mySqlClient.query('INSERT INTO user SET ?', {
                pseudo: pseudo,
                mail: mail,
                pass: password
            }, function (err, result) {
                if (err){
                   throw err;
                } else {

                console.log(result.insertId);

               }
            });
       } else {
       reponse.render('signup.ejs', {
           'titre': 'War.io signup',
           'errorPseudo': errorPseudo,
           'errorMail': errorMail
      });

     }
    });
app.listen(8080);

如果我理解正确,您需要在函数的顶层定义变量。这会将它设置为函数内部的范围变量,而不是全局对象上的属性,这就是在if循环(不带var)中定义它的作用


你必须发布相关代码,否则没人能帮你。是
mailDispo
在您使用它的地方定义了它?
mailDispo
没有定义。添加
var mailDispo
route函数中的某个地方,例如
var checkMail=…
之后的行上。here=>L72:if(mailDispo==1&&pseudoDispo==1)我有此错误。。泰
app.post('/signup', function (request, response) {
    var mailDispo;
    var pseudo = request.body.pseudo;
    var mail = request.body.mail;
    var password = request.body.password;
    var checkMail = "select id from user where mail=" +       mysql.escape(mail);
    sqlQueryMail = mySqlClient.query(checkMail);
    sqlQueryMail.on("result", function (row) {
    if (row.id) {
        mailDispo = 0;
        errorMail = "Adresse email deja use";
    } else {
       mailDispo = 1;
    }
 });