我正在尝试使用节点 js 服务将 .json
文件的内容获取到 angularjs 方法中。但我收到以下 错误:
_http_outgoing.js:700 throw new ERR_INVALID_ARG_TYPE(‘chunk’, [‘string’, ‘Buffer’], chunk); ^ TypeError [ERR_INVALID_ARG_TYPE]:“块”参数必须是字符串或缓冲区类型之一。在 ServerResponse.end (_http_outgoing.js:700:13) 接收到类型对象
这是相应的代码片段…
角度控制器: 注释行是我尝试过但失败的所有行。
var currentProcess = "process_1cA";
$scope.storestats = [];
var resAss = $resource('/procs/getstorestats');
var stats = resAss.get({
process: currentProcess,
date: date.getFullYear() + "" + m + "" + d
});
stats.$promise.then(function(response) {
if (response != undefined) {
// var r = JSON.parse(response);
//$scope.storestats.push(r);
//$scope.storestats.push(r);
//var r = JSON.parse(response);
$scope.storestats.push(response);
//angular.forEach(r, function(value, key) {
// $scope.storestats.push({key : value});
//});
}
});
NODEJs 服务:
httpApp.get('/procs/getstorestats', function(req, res, next) {
try {
fs.readFile(cfg.routestatspath + "storestats-"+req.query.process + "-" + req.query.date + ".json", function (err, data) {
var msgs1 = JSON.parse(data);
//var r = data.toString('utf8');
var msgs2 = JSON.stringify(msgs1);
console.log(msgs1);
res.end(msgs1);
});
}
catch (err) {
res.end(err.toString());
}});
PS: 注释掉的行是我尝试过但失败的行。此外,节点服务代码片段中的注释行没有给出错误,并且在记录时显示正确,但控制器响应时的数据为空白。
原文由 Harshith Rai 发布,翻译遵循 CC BY-SA 4.0 许可协议
弄清楚了。需要进行 2 处小改动。在控制器中进行一处改动,即使用“\(resource.query”而不是“\)resource.get”。正如@jakarella 所说,在服务中,必须使用 .end(); 中的字符串化部分;
控制器:
节点服务: