我在我的脚本中遇到了这个错误,该错误在一个随机的时刻运行得非常顺利:
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)
随机&#34;随机&#34;我的意思是它发生在不可预测的时间 - 我运行的机器人每10,000毫秒(10秒)发送一个AJAX请求。稍作(尝试了大约10次)后,它会出现此错误消息并停止运行。我的代码的第3行(显然是错误的地方)涉及代码:
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);
}
答案 0 :(得分:2)
我假设每一次Roblox.com都没有响应您的电话。如果他们认为他们通过检查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
}
}
}
如果这没有帮助,你可以在你的解析周围使用try catch block
,至少它不会导致你的脚本在失败时停止运行