node.js请求|有时不会出现意外的令牌错误

时间:2013-11-23 14:54:44

标签: json node.js parsing syntax request

我有一个for循环调用27次天气api(27个不同的坐标)。

var input = {
            query: coords[1] + ',' + coords[0] ,
            format: 'JSON',
            fx: ''
          };
var url = _PremiumApiBaseURL + "marine.ashx?q=" + input.query + "&format=" + input.format + "&fx=" + input.fx + "&key=" + _PremiumApiKey;    
request(url,function (err, resp, body){
            body = JSON.parse(body);

返回的正文是字符串类型。 问题是,在执行JSON.parse时,有时我会得到下面显示的错误,有时候不会。有时它确实3确定然后抛出错误,有时7,有时只有1或有时27确定并且没有抛出错误。我无法看到问题在哪里,因为27个返回的数据对象总是相同的。

SyntaxError: Unexpected token <
    at Object.parse (native)
    at Request._callback (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/borrar_final.js:111:29)
    at Request.self.callback (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/node_modules/request/request.js:129:22)
    at Request.EventEmitter.emit (events.js:98:17)
    at Request.<anonymous> (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/node_modules/request/request.js:873:14)
    at Request.EventEmitter.emit (events.js:117:20)
    at IncomingMessage.<anonymous> (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/node_modules/request/request.js:824:12)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)

此致

1 个答案:

答案 0 :(得分:1)

您应检查请求期间是否发生错误,然后 - 解析正文。

request(url,function (err, resp, body){
                if (err) {
                    console.log(err);
                } else {
                    body = JSON.parse(body); 
                }