當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。