具有两个参数的“数据”callback不会以string的forms输出buffer.toString()

使用节点中的process.openStdin()对象获取input,如果callback函数有两个参数,则输出为缓冲区:

var stdin = process.openStdin(); stdin.on('data',function(err,chunk){ if(err) { console.error(err); return; } console.log(""+chunk.toString('ascii')); }); 

input: abcd

输出: <Buffer 61 62 63 64 0a>

但是如果callback函数是这样的一个单一的参数:

 var stdin = process.openStdin(); stdin.on('data',function(chunk){ // if(err) // { // console.error(err); // return; // } console.log(""+chunk.toString('ascii')); }); 

然后输出与input匹配(即输出是abcd )。 为什么是这样?

data事件没有err参数,它们只有一个Buffer / string参数。

如果您想侦听错误,则需要单独监听stream上的error事件 。