Node.js 中 console.log 输出的长度有限制吗?下面的代码打印 56462 之前的数字,然后停止。出现此问题是因为我们从 MySQL 返回数据集,并且输出将在 327k 个字符后退出。
var out = "";
for (i = 0; i < 100000; i++) {
out += " " + i;
}
console.log(out);
字符串本身看起来很好,因为这会返回最后几个数字,直到 99999:
console.log(out.substring(out.length - 23));
返回:
99996 99997 99998 99999
这是使用 Node v0.6.14。
您是否尝试过在内存更大的机器上写那么多内容?
根据Node源代码控制台正在写入流:https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/console.js#L55 https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/console.js#L55
流可以将数据缓冲到内存中:http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback
因此,如果您确实将大量数据放入流中,则可能会达到内存上限。
我建议您拆分数据并将其输入process.stdout.write
方法,这是一个例子:http://nodejs.org/api/stream.html#stream_event_drain http://nodejs.org/api/stream.html#stream_event_drain
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)