writeSync() 仅在存在 console.log 时写入控制台 (node.js)

writeSync() only writes to the console when console.log is present (node.js)

采用以下片段:

try {
      fs = require('fs');
      fs.writeSync(0, 'Trying now...');
      fs.writeSync(0, 'worked!\r');
    }
catch(error){}

照原样,它不会输出到控制台,但是

  try {
  fs = require('fs');
  fs.writeSync(0, 'Trying now...');
  fs.writeSync(0, 'worked!\r');
  console.log();
}
catch(error){}

将输出 "Trying now... worked!" 到控制台。这到底是怎么回事?

刚刚意识到这是因为我使用的是 \r 而不是 \n

您正在写入文件描述符但没有刷新它。写一个换行符(\n 而不是 \r)确实会导致 stdout 刷新它的缓冲区,以及一个强制它的 console.log() 调用。