节点js – 我有一些麻烦与JSON.parse()
我一直在玩youtube API和node.js,到目前为止,我已经能够从API和console.log
得到响应到terminal。
当我尝试获取响应并使用JSON.parse
,出现一个奇怪的错误:
Got response: 200 undefined:1 http://www.w3.or ^ SyntaxError: Unexpected token u at Object.parse (native) at IncomingMessage.<anonymous> (/home/ubuntu/node_temp4/index.js:19:10) at IncomingMessage.emit (events.js:88:20) at HTTPParser.onMessageComplete (http.js:137:23) at Socket.ondata (http.js:1137:24) at TCP.onread (net.js:354:27)
这是我的脚本:
var http = require("http"); var searchQuery = "cats"; var queryResponse; var options = { host: 'gdata.youtube.com', path: "/feeds/api/videos?q=" + searchQuery + "&max-results=1&v=2&alt=json" }; http.get(options, function(response) { console.log("Got response: " + response.statusCode); response.on('data', function(chunk){ queryResponse += chunk; }); response.on('end', function(){ JSON.parse(queryResponse); console.log('end'); }); }).end();
variablesqueryResponse
被设置为undefined
并且正在执行queryResponse += chunk
in'data'envent处理程序,这意味着queryResponse = queryResponse + chunk
因此您可以
undefined{"youtube":["Api", "response"]}
你可以通过将queryResponse
实例化为一个空string来修复它var queryResponse = ''