googleapis / google-cloud-node

Google Cloud Client Library for Node.js
https://cloud.google.com/nodejs
Apache License 2.0
2.9k stars 592 forks source link

fix: avoid unhandled exception on streamingRecognize #5465

Closed orgads closed 3 months ago

orgads commented 3 months ago
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Object
    at _write (node:internal/streams/writable:474:13)
    at Writable.write (node:internal/streams/writable:502:10)
    at Duplexify._write (/project/node_modules/duplexify/index.js:212:22)
    at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
    at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
    at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
    at Pumpify.<anonymous> (/project/node_modules/@google-cloud/speech/build/src/helpers.js:79:27)
    at Object.onceWrapper (node:events:633:26)
    at Pumpify.emit (node:events:518:28)
    at obj.<computed> [as _write] (/project/node_modules/stubs/index.js:28:22)
    at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
    at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
    at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
    at PassThrough.ondata (node:internal/streams/readable:1007:22)
    at PassThrough.emit (node:events:518:28)
    at addChunk (node:internal/streams/readable:559:12) {
  code: 'ERR_INVALID_ARG_TYPE'

This happens because streamingRecognize writes streamingConfig on first chunk. Usually the stream is open in object mode, so it works, but when the client is terminated, PassThrough is used without object mode.

Change PassThrough to object mode, so it terminates gracefully.

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

Fixes #5464 🦕

sofisl commented 3 months ago

/gcbrun

sofisl commented 3 months ago

/gcbrun