@@ -17,6 +17,7 @@ import { FsaNodeReadStream } from './FsaNodeReadStream';
1717import { FsaNodeCore } from './FsaNodeCore' ;
1818import { FileHandle } from '../node/FileHandle' ;
1919import { dataToBuffer , isFd , isWin , validateFd } from '../core/util' ;
20+ import * as errors from '../vendor/node/internal/errors' ;
2021import type { FsCallbackApi , FsPromisesApi } from '../node/types' ;
2122import type * as misc from '../node/types/misc' ;
2223import type * as opts from '../node/types/options' ;
@@ -792,12 +793,22 @@ export class FsaNodeFs extends FsaNodeCore implements FsCallbackApi, FsSynchrono
792793 } ;
793794
794795 public openAsBlob = async ( path : misc . PathLike , options ?: opts . IOpenAsBlobOptions ) : Promise < Blob > => {
795- const buffer = await new Promise < Buffer > ( ( resolve , reject ) => {
796- this . readFile ( path , ( err , data : Buffer ) => {
797- if ( err ) reject ( err ) ;
798- else resolve ( data ) ;
796+ let buffer ;
797+ try {
798+ buffer = await new Promise < Buffer > ( ( resolve , reject ) => {
799+ this . readFile ( path , ( err , data : Buffer ) => {
800+ if ( err ) reject ( err ) ;
801+ else resolve ( data ) ;
802+ } ) ;
799803 } ) ;
800- } ) ;
804+ } catch ( error ) {
805+ // Convert ENOENT to Node.js-compatible error for openAsBlob
806+ if ( error && typeof error === 'object' && error . code === 'ENOENT' ) {
807+ const nodeError = new errors . TypeError ( 'ERR_INVALID_ARG_VALUE' ) ;
808+ throw nodeError ;
809+ }
810+ throw error ;
811+ }
801812 const type = options ?. type || '' ;
802813 return new Blob ( [ buffer as BlobPart ] , { type } ) ;
803814 } ;
0 commit comments