你好我不明白为什么我有这个错误,我以为回收是在收到数据后执行的,任何想法来自哪里? 非常感谢!
节点错误:
SyntaxError: Unexpected end of input
at Object.parse (native)
我解析了正文的答案,然后将其发送到计算函数,然后再将其发送到页面= /
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...
答案 0 :(得分:12)
正如评论中所讨论的,您可能会收到空的或格式错误的请求,导致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);
}