こんな感じのコードでfirebase adminをつかってバイナリファイルをcloud storageへアップロードしようとした。
const bucket = admin .storage() .bucket("hogehoge"); const bufferedContent = Buffer.from(base64EncodedContent, "base64"); const filePath = `${userId}/${base64EncodedContent.name}`; const file = bucket.file(filePath); await file.save(bufferedContent, { resumable: true, metadata: { contentType: base64EncodedContent.contentType }, });
が、実行するとTypeError: RequestInit: duplex option is required when sending a body.
というエラーになってしまった。
見たことないエラーだし、chatGPTに聞いても検索しても何もわからず。。。
その他の雑多なエラーメッセージを見ていたところ
/node_modules/@google-cloud/storage/build/src/resumable-upload.js:641:21
/node_modules/@google-cloud/storage/build/src/resumable-upload.js:497:26
でエラーが発生しているらしく、resumable-upload周りがおかしいんじゃないの?と思い、
resumable: false
にしてみたら無事エラー解消。
とりあえず動くようになってよかったが、何が問題だったのかはわからない。。。
アップロード対象のサイズが極小過ぎて(45byteのテキストファイル)、いい感じに分割してアップロードしようとする処理がエラーになったとかそういう感じなのかな。