SyntaxError:Object.parse(native)npm请求的input意外结束

你好,我不明白为什么我有这个错误,我认为callback一旦收到数据执行,任何想法,这是从哪里来的? 非常感谢!

节点错误:

SyntaxError: Unexpected end of input at Object.parse (native) 

我parsing身体的答案发送到一个计算function,然后发送到页面= /

 var options = { method: 'POST', url: self.rippledataapiProxyHost.account_offers_exercised, headers: { "Content-Type": "application/json", "Accept": "application/json" }, body:parameters }; var callback = function(error, response, body) { if (error) { console.log('error', error); res.send(500, 'something went wrong'); } console.dir("bodyyyyyyyy====>",body); var rippleoffersexercised = new self.datacalcul.rippleoffersexercised; var data = JSON.parse(body); var datas = rippleoffersexercised.calculate(data); res.status(response.statusCode).send(datas); } request(options, callback); 

这是堆栈跟踪:

 'bodyyyyyyyy====>' SyntaxError: Unexpected end of input at Object.parse (native) at Request.callback [as _callback] (/home/francois/dev/ripplereport/webserver-newclientFrancois/server/middlewares/proxy/rippledataapiProxy.js:77:20) at Request.self.callback (/home/francois/dev/ripplereport/webserver-newclientFrancois/node_modules/request/request.js:344:22) at Request.emit (events.js:98:17) at Request.<anonymous> (/home/francois/dev/ripplereport/webserver-newclientFrancois/node_modules/request/request.js:1239:14) at Request.emit (events.js:117:20) at IncomingMessage.<anonymous> (/home/francois/dev/ripplereport/webserver-newclientFrancois/node_modules/request/request.js:1187:12) at IncomingMessage.emit (events.js:117:20) at _stream_readable.js:943:16 at process._tickCallback (node.js:419:13) [gulp] [nodemon] app crashed - waiting for file changes before starting... 

正如在评论中所讨论的,你可能会得到空的或畸形的请求,导致JSON.parse抛出。 像这样的东西应该可以帮助你:

 var callback = function(error, response, body) { if (error) { console.log('error', error); return res.send(500, 'something went wrong'); } try { var data = JSON.parse(body); } catch(e) { console.log('malformed request', body); return res.status(400).send('malformed request: ' + body); } console.log('body', body); var rippleoffersexercised = new self.datacalcul.rippleoffersexercised; var datas = rippleoffersexercised.calculate(data); return res.status(response.statusCode).send(datas); }