- Assertion Testing
- Async Hooks
- Buffer
- C++ Addons
- C/C++ Addons with N-API
- Child Processes
- Cluster
- Command Line Options
- Console
- Crypto
- Debugger
- Deprecated APIs
- DNS
- Domain
- ECMAScript Modules
- Errors
- Events
- File System
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules
- Net
- OS
- Path
- Performance Hooks
- Policies
- Process
- Punycode
- Query Strings
- Readline
- REPL
- Report
- Stream
- String Decoder
- Timers
- TLS/SSL
- Trace Events
- TTY
- UDP/Datagram
- URL
- Utilities
- V8
- VM
- WASI
- Worker Threads
- Zlib
Node.js v14.0.0-nightly2019120149fb529139 Documentation
Table of Contents
WebAssembly System Interface (WASI)#
The WASI API provides an implementation of the WebAssembly System Interface specification. WASI gives sandboxed WebAssembly applications access to the underlying operating system via a collection of POSIX-like functions.
'use strict';
const fs = require('fs');
const { WASI } = require('wasi');
const wasi = new WASI({
  args: process.argv,
  env: process.env,
  preopens: {
    '/sandbox': '/some/real/path/that/wasm/can/access'
  }
});
const importObject = { wasi_unstable: wasi.wasiImport };
(async () => {
  const wasm = await WebAssembly.compile(fs.readFileSync('./binary.wasm'));
  const instance = await WebAssembly.instantiate(wasm, importObject);
  wasi.start(instance);
})();
The --experimental-wasi-unstable-preview0 and --experimental-wasm-bigint
CLI arguments are needed for the previous example to run.
Class: WASI[src]#
The WASI class provides the WASI system call API and additional convenience
methods for working with WASI-based applications. Each WASI instance
represents a distinct sandbox environment. For security purposes, each WASI
instance must have its command line arguments, environment variables, and
sandbox directory structure configured explicitly.
new WASI([options])[src]#
- 
options<Object>- args<Array> An array of strings that the WebAssembly application will see as command line arguments. The first argument is the virtual path to the WASI command itself. Default:- [].
- env<Object> An object similar to- process.envthat the WebAssembly application will see as its environment. Default:- {}.
- preopens<Object> This object represents the WebAssembly application's sandbox directory structure. The string keys of- preopensare treated as directories within the sandbox. The corresponding values in- preopensare the real paths to those directories on the host machine.
 
wasi.start(instance)#
- instance<WebAssembly.Instance>
Attempt to begin execution of instance by invoking its _start() export.
If instance does not contain a _start() export, then start() attempts to
invoke the __wasi_unstable_reactor_start() export. If neither of those exports
is present on instance, then start() does nothing.
start() requires that instance exports a WebAssembly.Memory named
memory. If instance does not have a memory export an exception is thrown.
wasi.wasiImport#
wasiImport is an object that implements the WASI system call API. This object
should be passed as the wasi_unstable import during the instantiation of a
WebAssembly.Instance.