SyntheticModule

external class SyntheticModule : Module(source)

This feature is only available with the --experimental-vm-modules command flag enabled.

The vm.SyntheticModule class provides the Synthetic Module Record as defined in the WebIDL specification. The purpose of synthetic modules is to provide a generic interface for exposing non-JavaScript sources to ECMAScript module graphs.

import vm from 'node:vm';

const source = '{ "a": 1 }';
const module = new vm.SyntheticModule(['default'], function() {
const obj = JSON.parse(source);
this.setExport('default', obj);
});

// Use `module` in linking...

Since

v13.0.0, v12.16.0

Constructors

Link copied to clipboard
constructor(exportNames: ReadonlyArray<String>, evaluateCallback: () -> Unit, options: SyntheticModuleOptions = definedExternally)

Creates a new SyntheticModule instance.

Properties

Link copied to clipboard
external var context: Context
Link copied to clipboard
external var error: Any?

If the module.status is 'errored', this property contains the exception thrown by the module during evaluation. If the status is anything else, accessing this property will result in a thrown exception.

Link copied to clipboard
external var identifier: String

The identifier of the current module, as set in the constructor.

Link copied to clipboard
external var namespace: Any

The namespace object of the module. This is only available after linking (module.link()) has completed.

Link copied to clipboard
external var status: ModuleStatus

The current status of the module. Will be one of:

Functions

Link copied to clipboard
suspend external fun evaluate(options: ModuleEvaluateOptions = definedExternally): Void
Link copied to clipboard
external fun evaluateAsync(options: ModuleEvaluateOptions = definedExternally): Promise<Void>

Evaluate the module and its depenendencies. Corresponds to the Evaluate() concrete method field of Cyclic Module Records in the ECMAScript specification.

Link copied to clipboard
suspend external fun link(linker: ModuleLinker): Void
Link copied to clipboard
external fun linkAsync(linker: ModuleLinker): Promise<Void>

Link module dependencies. This method must be called before evaluation, and can only be called once per module.

Link copied to clipboard
external fun setExport(name: String, value: Any?)

This method sets the module export binding slots with the given value.