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。
答案 0 :(得分:4)
你是否曾尝试在具有更多内存的机器上写这么多?
根据Node源代码控制台写入一个流:https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/console.js#L55
流可以将数据缓冲到内存中:http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback
因此,如果您将大量数据放入流中,则可能会达到内存上限。
我建议您拆分数据并将其反馈到process.stdout.write
方法,例如:http://nodejs.org/api/stream.html#stream_event_drain
答案 1 :(得分:0)
我建议在使用节点&gt;时使用输出文件。 6.0
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// custom simple logger
const logger = new Console(output, errorOutput);
// use it like console
var count = 5;
logger.log('count: %d', count);
// in stdout.log: count 5