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