Lin Du
Lin Du

Reputation: 102597

node.js, process.stdin, throw new TypeError('"encoding" must be a valid string encoding');

I write a testing code for 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');
});

when I input some text, press enter, node.js give me:

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)

How to solve this? thanks.

Upvotes: 1

Views: 784

Answers (1)

ralphtheninja
ralphtheninja

Reputation: 133208

The problem is here:

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

You need to concatenate the strings. This is not a console.log function, e.g.:

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

Upvotes: 1

Related Questions