sandbox-memo

開発してて出たエラーをメモる場所

cloud storageへfile.saveをしようとしたらTypeError: RequestInit: duplex option is required when sending a body.

こんな感じのコードで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のテキストファイル)、いい感じに分割してアップロードしようとする処理がエラーになったとかそういう感じなのかな。