blog.unresolved.xyz
Wed Mar 30 2022

React NativeのBlobはJSのBlobに準拠していない

TypeError: Network request failed when fetching a file:// uri · Issue #2402 · expo/expo

これめっちゃエッヂケースでしょという気がするんだけど、ファイルアップロードとかでBlobが必要になる場面は結構あって、気軽に踏み抜いてしまった

ワークアラウンドとしてはコメントに上がってる通りXHRを使ってBlobを取得すればなんとかなる

const blob = await new Promise((resolve, reject) => {
  const xhr = new XMLHttpRequest();
  xhr.onload = function() {
    resolve(xhr.response);
  };
  xhr.onerror = function() {
    reject(new TypeError('Network request failed'));
  };
  xhr.responseType = 'blob';
  xhr.open('GET', uri, true);
  xhr.send(null);
});

ちなみにCommunityでも議題に上がってはいるけど放置されてる

Fix Blob Compatibility · Issue #109 · react-native-community/discussions-and-proposals

Author
Daisuke Tsuji

Daisuke Tsuji

フリーのWeb Developer。

RubyとかRailsを触ってる時間が多い。コーディングもマークアップもライティングもデザインもSEOもやるタイプ。

だいたいどれもだめ。業務委託のお仕事募集中。