new vm.SourceTextModule(code[, options])
- 
code<string> 要解析的 JavaScript 模块代码¥
code<string> JavaScript Module code to parse - 
options- 
identifier<string> 用于堆栈跟踪的字符串。默认值:'vm:module(i)',其中i是上下文特定的升序索引。¥
identifier<string> String used in stack traces. Default:'vm:module(i)'whereiis a context-specific ascending index. - 
cachedData<Buffer> | <TypedArray> | <DataView> 为所提供的源提供可选的Buffer或TypedArray或DataView,其中包含 V8 的代码缓存数据。code必须与创建此cachedData的模块相同。¥
cachedData<Buffer> | <TypedArray> | <DataView> Provides an optionalBufferorTypedArray, orDataViewwith V8's code cache data for the supplied source. Thecodemust be the same as the module from which thiscachedDatawas created. - 
context<Object>vm.createContext()方法返回的 contextified 对象,用于编译和评估此Module中的对象。¥
context<Object> The contextified object as returned by thevm.createContext()method, to compile and evaluate thisModulein. - 
lineOffset<integer> 指定在此Module产生的堆栈跟踪中显示的行号偏移量。默认值:0。¥
lineOffset<integer> Specifies the line number offset that is displayed in stack traces produced by thisModule. Default:0. - 
columnOffset<integer> 指定在此Module生成的堆栈跟踪中显示的第一行列号偏移量。默认值:0。¥
columnOffset<integer> Specifies the first-line column number offset that is displayed in stack traces produced by thisModule. Default:0. - 
initializeImportMeta<Function> 在评估此Module期间调用以初始化import.meta。¥
initializeImportMeta<Function> Called during evaluation of thisModuleto initialize theimport.meta.- 
meta<import.meta> - 
module<vm.SourceTextModule> 
 - 
 - 
importModuleDynamically<Function> 在调用import()时在评估此模块期间调用。如果未指定此选项,则调用import()将使用ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING拒绝。¥
importModuleDynamically<Function> Called during evaluation of this module whenimport()is called. If this option is not specified, calls toimport()will reject withERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING.- 
specifier<string> 说明符传递给import()¥
specifier<string> specifier passed toimport() - 
module<vm.Module> - 
importAssertions<Object> 传给optionsExpression可选参数的"assert"值,如果没有提供值,则为空对象。¥
importAssertions<Object> The"assert"value passed to theoptionsExpressionoptional parameter, or an empty object if no value was provided. - 
返回:<Module Namespace Object> | <vm.Module> 建议返回
vm.Module以利用错误跟踪,并避免包含then函数导出的命名空间出现问题。¥Returns: <Module Namespace Object> | <vm.Module> Returning a
vm.Moduleis recommended in order to take advantage of error tracking, and to avoid issues with namespaces that containthenfunction exports. 
 - 
 
 - 
 
创建新的 SourceTextModule 实例。
¥Creates a new SourceTextModule instance.
分配给作为对象的 import.meta 对象的属性可能允许模块访问指定 context 之外的信息。使用 vm.runInContext() 在特定上下文中创建对象。
¥Properties assigned to the import.meta object that are objects may
allow the module to access information outside the specified context. Use
vm.runInContext() to create objects in a specific context.
import vm from 'node:vm';
const contextifiedObject = vm.createContext({ secret: 42 });
const module = new vm.SourceTextModule(
  'Object.getPrototypeOf(import.meta.prop).secret = secret;',
  {
    initializeImportMeta(meta) {
      // Note: this object is created in the top context. As such,
      // Object.getPrototypeOf(import.meta.prop) points to the
      // Object.prototype in the top context rather than that in
      // the contextified object.
      meta.prop = {};
    }
  });
// Since module has no dependencies, the linker function will never be called.
await module.link(() => {});
await module.evaluate();
// Now, Object.prototype.secret will be equal to 42.
//
// To fix this problem, replace
//     meta.prop = {};
// above with
//     meta.prop = vm.runInContext('{}', contextifiedObject);const vm = require('node:vm');
const contextifiedObject = vm.createContext({ secret: 42 });
(async () => {
  const module = new vm.SourceTextModule(
    'Object.getPrototypeOf(import.meta.prop).secret = secret;',
    {
      initializeImportMeta(meta) {
        // Note: this object is created in the top context. As such,
        // Object.getPrototypeOf(import.meta.prop) points to the
        // Object.prototype in the top context rather than that in
        // the contextified object.
        meta.prop = {};
      }
    });
  // Since module has no dependencies, the linker function will never be called.
  await module.link(() => {});
  await module.evaluate();
  // Now, Object.prototype.secret will be equal to 42.
  //
  // To fix this problem, replace
  //     meta.prop = {};
  // above with
  //     meta.prop = vm.runInContext('{}', contextifiedObject);
})();