每当我尝试打印字符串时,执行都会暂停并退出程序。
var config = require('../config.json');
var upacConfig = config.upac;
var endpoint = upacConfig.endpoint;
var customer = upacConfig.customer;
var port = upacConfig.port;
const http = require('http');
const util = require('util');
module.exports.getAll = function getAll(cb) {
var url = "/" + upacConfig.methods.all + "?customer=" + customer;
console.log(url);
http.request({
host: endpoint,
path: url,
port: port
}, function(resp) {
let s = '';
// console.log('response');
// var lines = 0;
resp.on('data', function(d){
s += d.toString();
// console.log(++lines);
})
.on('end', function(){
console.log(typeof s);
console.log('length:', s.length);
console.log(s); // <-- problem! lines below are not executed...
console.log('length:', s.length);
cb(null, s);
})
})
.on('error', e => {
console.log('Err:', e);
})
.end();
};
节点版本:7.1.0
代码输出的所有内容如下:
/api/v1/all?customer=foo
string
length: 323416
编辑:对于MVE,请执行以下操作:
这是一个简单的服务器,它提供上面提到的相同字符数的文本文件。 (我的JSON字符串很长......)。
const http = require('http');
const fs = require('fs');
const path = require('path');
var file = path.join(__dirname,'json.txt')
var app = http.createServer(function(req, res) {
fs.createReadStream(file).pipe(res);
});
app.listen(3000);
这是一个测试客户端,可以满足上述服务的需要。
const http = require('http');
http.request('http://localhost:3000/', r => {
var s = '';
r.on('data', d => s+= d)
.on('end', () => {
console.log('length:', s.length);
console.log(s);
});
}).end();
答案 0 :(得分:0)
我尝试使用json.txt
324418,它在Windows 10上为我工作。你能尝试附加windbg并共享调用堆栈吗?