blog.unresolved.xyz

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

Wed Mar 30 2022
  • React Native
  • TIL

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

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

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

1const blob = await new Promise((resolve, reject) => { 2 const xhr = new XMLHttpRequest(); 3 xhr.onload = function() { 4 resolve(xhr.response); 5 }; 6 xhr.onerror = function() { 7 reject(new TypeError('Network request failed')); 8 }; 9 xhr.responseType = 'blob'; 10 xhr.open('GET', uri, true); 11 xhr.send(null); 12});

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

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