困惑为什么我在Node.js(require.js)中得到这个错误

我的脚本中出现了这个错误,运行得非常顺利,直到一个随机的时刻:

undefined:3 <!DOCTYPE html> ^ SyntaxError: Unexpected token < at Object.parse (native) at Request._callback (C:\Users\Tom\Pictures\Bot\background.js:44:26) at Request.self.callback (C:\Users\Tom\Pictures\Bot\node_modules\request\request.js:199:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request.<anonymous> (C:\Users\Tom\Pictures\Bot\node_modules\request\request.js:1036:10) at emitOne (events.js:82:20) at Request.emit (events.js:169:7) at IncomingMessage.<anonymous> (C:\Users\Tom\Pictures\Bot\node_modules\request\request.js:963:12) at emitNone (events.js:72:20) at IncomingMessage.emit (events.js:166:7) 

通过“随机”我的意思是说,这是发生在不可预知的时代 – 我正在运行一个机器人,每10,000毫秒(10秒)发送一个AJAX请求。 经过一段时间(试了10次)后,出现这个错误信息并停止运行。 我的代码的第三行显然是错误,涉及代码:

 var request = require("request"); 

我不知道错误是什么,但是我处理我的代码的方式?

 var scan = function() { var interval = setInterval(function() { request({ url: "http://www.roblox.com/catalog/json?CatalogContext=1&CurrencyType=0&CreatorID=1&pxMin=0&pxMax=0&SortType=0&SortAggregation=3&SortCurrency=0&IncludeNotForSale=true&LegendExpanded=true&Category=0&PageNumber=1", method: 'GET' }, function(err, res, body) { var r = body; if (r && r.length > 0) { r = r.toString(); r = JSON.parse(r); var len = r.length; for (var i = 0; i < len; i++) { //do stuff here } } }) }, 20); } 

我假设每一次和一段时间Roblox.com都没有回应你的电话。 你应该能够检查(假设他们正在发送状态的头回给你),如果他们认为他们给你一个有效的JSON响应通过检查是否res == 200

  function(err, res, body) { if(res !== 200) { //if not success //handle issue here console.log(body); return; } var r = body; if (r && r.length > 0) { r = r.toString(); r = JSON.parse(r); var len = r.length; for (var i = 0; i < len; i++) { //do stuff here } } } 

如果没有帮助,你可以在parsing时使用一个try catch block ,至less当你的脚本失败的时候,它不会导致你的脚本停止运行