# Read WebAssembly > Read a file as [WebAssembly][webassembly].
## Usage ```javascript var readWASM = require( '@stdlib/fs/read-wasm' ); ``` #### readWASM( file\[, options], clbk ) Asynchronously reads a file as [WebAssembly][webassembly]. ```javascript var join = require( 'path' ).join; var fpath = join( __dirname, 'examples', 'fixtures', 'file.wasm' ); readWASM( fpath, onRead ); function onRead( error, buf ) { if ( error ) { throw error; } console.log( buf ); } ``` The function accepts the following `options`: - **flag**: file status flag. #### readWASM.sync( file\[, options] ) Synchronously reads a file as [WebAssembly][webassembly]. ```javascript var join = require( 'path' ).join; var instanceOf = require( '@stdlib/assert/instance-of' ); var fpath = join( __dirname, 'examples', 'fixtures', 'file.wasm' ); var out = readWASM.sync( fpath ); if ( instanceOf( out, Error ) ) { throw out; } console.log( out ); ``` The function accepts the same `options` as [`readWASM()`](#read-wasm) above.
## Notes - In contrast to [`readFile()`][@stdlib/fs/read-file], neither function accepts an `encoding` option. As [WebAssembly][webassembly] is a binary file format, if provided an `encoding` option, the function **overrides** the option, setting the option value to `null`. - Both functions return [WebAssembly][webassembly] file content as a [`Uint8Array`][@stdlib/array/uint8].
## Examples ```javascript var join = require( 'path' ).join; var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); var readWASM = require( '@stdlib/fs/read-wasm' ); var fpath = join( __dirname, 'examples', 'fixtures', 'file.wasm' ); readWASM( fpath, onRead ); function onRead( error, wasm ) { var bool; if ( error ) { throw error; } bool = hasWebAssemblySupport(); // If WebAssembly is supported, create a WebAssembly module instance... if ( bool ) { wasm = new WebAssembly.Module( wasm ); wasm = new WebAssembly.Instance( wasm, {} ); console.log( wasm.exports.stdlib_hypot( 5.0, 12.0 ) ); } else { console.log( wasm ); } } ```