当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js vm.Module.link(linker)用法及代码示例


module.link(linker)

  • linker <Function>
    • specifier <string> 请求模块的说明符:

      import foo from 'foo';
      //              ^^^^^ the module specifier
    • referencingModule <vm.Module> Module 对象 link() 被调用。

    • extra <Object>

      • assert <Object>断言中的数据:
        import foo from 'foo' assert { name: 'value' };
        //                           ^^^^^^^^^^^^^^^^^ the assertion
        根据 ECMA-262,主机应该忽略它们不支持的断言,而不是,例如,如果存在不受支持的断言,则会触发错误。
    • 返回: <vm.Module> | <Promise>

  • 返回: <Promise>

链接模块依赖项。此方法必须在评估之前调用,并且每个模块只能调用一次。

该函数应返回 Module 对象或最终解析为 Module 对象的 Promise。返回的Module 必须满足以下两个不变量:

  • 它必须与父级 Module 属于相同的上下文。
  • 它的 status 不能是 'errored'

如果返回的 Modulestatus'unlinked' ,则将在返回的 Module 上使用提供的相同 linker 函数递归调用此方法。

link() 返回一个 Promise ,当所有链接实例解析为有效的 Module 时,该 Promise 将被解析,或者如果链接器函数抛出异常或返回无效的 Module 则被拒绝。

链接器函数大致对应于 ECMAScript 规范中实现定义的HostResolveImportedModule 抽象操作,有几个关键区别:

在模块链接期间使用的实际HostResolveImportedModule 实现是返回链接期间链接的模块的实现。由于此时所有模块都已完全链接,因此 HostResolveImportedModule 实现按照规范是完全同步的。

对应于 ECMAScript 规范中 Cyclic Module RecordLink() concrete method 字段。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 vm.Module.link(linker)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。