node.js, process.stdin, 抛出新的 TypeError(' "encoding" 必须是有效的字符串编码');



我为process.stdin编写了一个测试代码:

console.log('User input: ');
process.stdin.setEncoding('utf8');
process.stdin.on('readable', () => {
  const chunk = process.stdin.read();
  if (chunk) {
    process.stdout.write('Print Data: ', chunk, 'n');
  }
});
process.stdin.on('end', () => {
  process.stdout.write('end.n');
});

当我输入一些文本时,按 enternode.js给我:

buffer.js:302
      throw new TypeError('"encoding" must be a valid string encoding');
      ^
TypeError: "encoding" must be a valid string encoding
    at fromString (buffer.js:302:13)
    at Function.Buffer.from (buffer.js:173:12)
    at createWriteReq (net.js:803:45)
    at WriteStream.Socket._writeGeneric (net.js:754:11)
    at WriteStream.Socket._write (net.js:777:8)
    at doWrite (_stream_writable.js:385:12)
    at writeOrBuffer (_stream_writable.js:371:5)
    at WriteStream.Writable.write (_stream_writable.js:288:11)
    at WriteStream.Socket.write (net.js:695:40)
    at ReadStream.process.stdin.on (/Users/elsa/workspace/Training.nodejs/examples/api/process/stdin.js:7:20)

如何解决这个问题?谢谢。

问题就在这里:

process.stdout.write('Print Data: ', chunk, 'n');

您需要连接字符串。这不是控制台.log函数,例如:

process.stdout.write('Print Data: ' + chunk + 'n');

最新更新