意外的输入结束 - 快速/节点应用程序上的 curl JSON
Unexpected End of Input - curl JSON on Express/Node App
我有一个部署到 Heroku 实例的 Express/Node 应用程序。 应用有一个 POST API 终结点,该终结点需要 .json 文件、读取数据并使用 JSON 数据填充应用。 下面是处理 POST 请求的后端代码:
router.route('/data')
.post(function (req, res) {
return DataUtils.storeData(req, res);
});
Utils.storeData = function (req, res) {
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
file.on('data', function(data) {
var data;
try {
data = JSON.parse('' + data); // quick casting into a String
var numPersonSessionObj = data.length;
...
// etc etc...
当我们尝试通过下面的 curl 命令发出请求时:
curl -H "Content-Length: 5567" -F file=@sample_data/sample_json.json http://[heroku-instance]/api/data
服务器有时工作正常,并上传数据,有时引发"意外输入结束"错误。 似乎由于某种原因,我们使用的缓冲区方法没有读取所有数据。 在上面的代码(即 JSON)中记录data.length
时,每当数据长度小于其预期时,请求似乎就会失败。 我在上面的 JSON 文件中的阅读方式有问题吗? 谢谢--
data
事件仅指示已收到某些数据,而不是已收到所有数据。您希望在解析 JSON 之前等待end
事件。有关更多详细信息,请参阅官方文档中的此示例:https://nodejs.org/api/stream.html#stream_api_for_stream_consumers
Content-Length 必须是响应正文的八位字节计数。
如果您尝试使用
data.length
而不是
Buffer.byteLength(data)
相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- Node.js正在更改应用程序以使用集群模块
- 在openshift node js应用程序中获取请求
- 如何在Facebook上的iframe应用程序中使后退按钮返回到上一页
- 三星智能电视应用程序;Brightcove示例应用程序远程控制问题