Javascript ReferenceError:未定义我的变量
我正在开发一个用于测试NodeJS的应用程序。 登录和注册系统。 因此,我测试用于注册的用户数据是否不在数据库中 但它在电子邮件上不起作用。 我有一个错误: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)
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;
}
});