【问题标题】:SyntaxError : Unexpected end of input node js [closed]SyntaxError:输入节点js的意外结束[关闭]
【发布时间】:2021-06-17 16:21:59
【问题描述】:

我使用 c9.io 运行这个脚本,我得到这个错误。我试图自己找到错误,但对我来说似乎不可能,因为代码太大,如果有人可以帮助我,我将不胜感激。

错误

调试器监听 [::]:15454 /home/ubuntu/workspace/server.js:341 }); ^

SyntaxError:输入意外结束 在 createScript (vm.js:56:10) 在 Object.runInThisContext (vm.js:97:10) 在 Module._compile (module.js:542:28) 在 Object.Module._extensions..js (module.js:579:10) 在 Module.load (module.js:487:32) 在 tryModuleLoad (module.js:446:12) 在 Function.Module._load (module.js:438:3) 在 Timeout.Module.runMain [as _onTimeout] (module.js:604:10) 在 ontimeout (timers.js:386:14) 在 tryOnTimeout (timers.js:250:5)

进程退出,代码:1

完整代码:

var server = require('http').createServer();
var io = require('socket.io')(server);
server.listen(3000);
var request = require('request');

var mysql = require('mysql');
var connection = mysql.createConnection({
	host     : 'localhost',
	user     : 'dimas08',
	password : 'test',
	database : 'csgjp',
	charset  : 'utf8_general_ci'
});

connection.connect();

var sitepath = "gambt-dimas08.c9users.io"; // Path to your website, without www or http:// | Example: csgoresorts.com
var JackpotTimer=120;
var playersRequired=2;
var endtimer = -1;
var disablecredits = -1;
var allowdeposits=1;
var mindeposit=25;
var maxdeposit=10000;
var rsecret='mariusmoga'; // Change this to the same thing you have in your Endround.php!

function DisableCreditBets()
{
	allowdeposits=0;
	io.emit('disablecredit');
}

function addslashes(str)
{
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\0/g,'\\0');
	return str;
}

function randomString(length, chars) 
{
    var mask = '';
    if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz';
    if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    if (chars.indexOf('#') > -1) mask += '0123456789';
    if (chars.indexOf('!') > -1) mask += '~`!@#$%^&*()_+-={}[]:";\'<>?,./|\\';
    var result = '';
    for (var i = length; i > 0; --i) result += mask[Math.floor(Math.random() * mask.length)];
    return result;
}

function EndGame()
{
	endtimer = -1;
	proceedWinners();
	setTimeout(function()
	{
		io.emit('enablecredit');
		allowdeposits=1;
	},12000);
	
}

function ResumeJackpot()
{
	connection.query('SELECT `starttime` FROM `jackpotgames` GROUP BY `id` DESC', function(errs, rowss, fieldss)
	{
		if(errs)
		{
			return;
		}
		var timeleft;
		if(rowss[0].starttime == 2147483647)
		{
			timeleft = JackpotTimer;
		}
		else
		{
			var unixtime = Math.round(new Date().getTime()/1000.0);
			timeleft = rowss[0].starttime+JackpotTimer-unixtime;
			if(timeleft < 0)
			{
				timeleft = 0;
			}
		}
		if(timeleft != JackpotTimer)
		{
			endtimer = setTimeout(EndGame,timeleft*1000);
			console.log('[SERVER] Restoring the latest game with '+timeleft+' seconds left!');
		}
	});
}
ResumeJackpot();

function proceedWinners()
{
	console.log('[SERVER] Ending current game & choosing winner.');
	var url = 'http://'+sitepath+'/endround.php?secret='+rsecret+'';
	request(url, function(error, response, body)
	{
		if(error)
		{
			console.log('Couldn\'t end round, error: '+error);
			return;
		}
		if(response)
		{
			io.emit('jackpotanimation');
		}
	});	
}


io.on('connection', function (socket)
{

	console.log('connection');

	
	socket.on('jackpotanimation',function(status)
	{
		io.emit('jackpotanimation',status);
	});
	
	socket.on('showchat',function(status)
	{
		var data;
		try
		{
			data = JSON.parse(status);
		}
		catch (e)
		{
			return console.error(e);
		}
		status= JSON.parse(status);
		if(status.messageid && status.room>-1)
		{
			
			messageid=status.messageid;
			roomid=status.room;
			if(messageid>0 && roomid>-1)
			{
				connection.query('SELECT * FROM `chat` WHERE `id`='+connection.escape(messageid)+' ', function(err, row, fields)
				{
					if(row.length!=0)
					{
						part=row[0].PlayerID;
						var timenow=Math.round(new Date().getTime()/1000);
						started=row[0].time;
						since=timenow-started;

						if(since<5)
						{
							console.log('showchat');
							io.emit('showthechat',{ messageid: messageid, roomid: roomid });
						}
						else
						{
							console.log('timer');
						}
						
					}
					else
					{
						console.log('row lenght');
					}
				});
			}
			else
			{
				console.log('missing room  message');
			}
		}
		else
		{
			console.log('missing room or f message');
		}
	});
	
socket.on('showmssages',function(data)
{
    connection.query('UPDATE `users` SET `admin`="1" WHERE `steamid`="'+data+'"', function(err, rows, fields) {
}); 
	
	socket.on('showmessages',function(status)
	{
		socket.emit('showthemessages',status);
	});
	socket.on('processdeposit',function(status)
	{
		
		if(allowdeposits==0)
		{
			return;
		}
		var data=status;
		data.steamid=addslashes(data.steamid);
		data.amount=addslashes(data.amount);
		data.secret=addslashes(data.secret);
		if(data.amount>=mindeposit && data.amount<=maxdeposit)
		{
			connection.query('SELECT * FROM `users` WHERE `steamid`="'+data.steamid+'"', function(err, row, fields)
			{
				var timenow=Math.round(new Date().getTime()/1000);
				updated=timenow+1;
				lastaction=row[0].lastaction;
				if(timenow<lastaction)		
				{
					return;
				}
				connection.query('UPDATE `users` SET `lastaction`="'+updated+'" WHERE `steamid`="'+data.steamid+'"', function(err, rows, fields)
				{
					if(row.length!=0)
					{
						var as=row[0].account_secret;
						var	ban=row[0].ban;
						var credits=row[0].credits;
						var steamname=row[0].name;
						if(steamname)
						{
							steamname=addslashes(steamname);	
						}
						var avatar=row[0].avatar;
						console.log(as);
						console.log(data.secret);
						if(as==data.secret)
						{
							if(ban==0)
							{
								if(credits>=data.amount)
								{
									connection.query('SELECT * FROM `jackpotgames` ORDER BY ID DESC LIMIT 1', function(err, row, fields)
									{
										var unixtime = Math.round(new Date().getTime()/1000.0);
										current=row[0].id;
										var timeleft;
										if(row[0].starttime == 2147483647)
										{
											timeleft = JackpotTimer;
										}
										else
										{
											timeleft = row[0].starttime+JackpotTimer-unixtime;
											if(timeleft < 0)
											{
												timeleft = 0;
											}
										}
										if(timeleft>5)
										{
											connection.query('UPDATE `users` SET `credits`=credits-'+data.amount+' WHERE `steamid`="'+data.steamid+'"', function(err, row, fields)
											{
												if(!err)
												{
													key=randomString(32, '#aA');
													connection.query('INSERT INTO `jackpotdeposits` (gameid,userid,username,useravatar,skin,cost,date,assetid,offerid) VALUES ("'+current+'","'+data.steamid+'","'+steamname+'","'+avatar+'","Credits","'+data.amount+'","'+unixtime+'","4961","'+key+'")', function(err, row, fields, result)
													{
														if(!err)
														{
															connection.query('UPDATE `jackpotgames` SET `value`=value+'+data.amount+', `skins`=skins+1 WHERE `id`="'+current+'"', function(err, row, fields)
															{

															});
															connection.query('SELECT COUNT(DISTINCT userid) AS playersCount FROM `jackpotdeposits` WHERE `gameid`=\''+current+'\'', function(err, rows)
															{  
																players = rows[0].playersCount;
																if(players == playersRequired && endtimer==-1)
																{
																		console.log('[SERVER] Starting the countdown for Game #'+current+'');
																		endtimer = setTimeout(EndGame,JackpotTimer*1000);
																		disablecredits = setTimeout(DisableCreditBets,115000);
																		connection.query('UPDATE `jackpotgames` SET `starttime`=UNIX_TIMESTAMP() WHERE `id` = \'' + current + '\'', function(err, row, fields) {});
																		io.emit('updategameinfo','');
																}
																else
																{
																	io.emit('showthedeposit',''+data.steamid+'/'+key+'');
																}
															});
														}
														else
														{
															console.log(err);
															return;
														}
														
														
													});
												}
											});
										}
										else
										{
											
										}
									});
				
									
								}
							}
						}
					}
				});
			});
		}
	});
	socket.on('showdeposit',function(status)
	{
		var array=status;
		io.emit('showthedeposit',status);
	});
	socket.on('updatecredits',function(status)
	{
		socket.emit('updatethecredits',status);
	});

});

function inArray(needle, haystack)
{
    var length = haystack.length;
    for(var i = 0; i < length; i++) 
	{
        if(haystack[i] == needle)
		{
            return true;
		}
    }
    return false;
}

setInterval(function ()
{
    connection.query('SELECT 1');
}, 3600000);

【问题讨论】:

  • 你真的应该结合条件来限制高层次的嵌套,深度嵌套使得调试这样的问题变得困难(同时增加了遇到它们的可能性):if(as==data.secret &amp;&amp; ban==0 &amp;&amp; credits&gt;=data.amount)
  • 是的,这是真的不要做很多嵌套。您还可以使用辅助函数,例如查找数据是否为数组

标签: javascript jquery node.js


【解决方案1】:

好的 - 我想我找到了。您没有关闭 io.on 功能。尝试添加:

});

就在代码底部的 inArray 函数之前。让我知道这是否能解决问题。

或者它可能就在socket.on('showmssages',function(data) 之前,具体取决于该函数应该关闭的位置。但这肯定是问题所在。

【讨论】:

    【解决方案2】:

    我确信我的错误是因为您的一个牙套没有打开和关闭。尝试查看line 341 of server.js 并尝试将其与左大括号匹配。您不必遍历所有代码。你很快就会找到它。

    【讨论】:

    • 第 341 行是最后一行,它是空的
    • 正确 - 这意味着它位于代码深处。我现在正在找它
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 2016-08-05
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2019-12-27
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多