代码在尝试打印字符串时突然停止执行

时间:2017-02-16 06:06:08

标签: node.js http buffer

每当我尝试打印字符串时,执行都会暂停并退出程序。

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();

1 个答案:

答案 0 :(得分:0)

我尝试使用json.txt 324418,它在Windows 10上为我工作。你能尝试附加windbg并共享调用堆栈吗?