module.link(linker)
linker
<Function>-
specifier
<string> 請求模塊的說明符:import foo from 'foo'; // ^^^^^ the module specifier
-
referencingModule
<vm.Module>Module
對象link()
被調用。 -
extra
<Object>assert
<Object>斷言中的數據:
根據 ECMA-262,主機應該忽略它們不支持的斷言,而不是,例如,如果存在不受支持的斷言,則會觸發錯誤。import foo from 'foo' assert { name: 'value' }; // ^^^^^^^^^^^^^^^^^ the assertion
-
返回: <vm.Module> | <Promise>
-
- 返回: <Promise>
鏈接模塊依賴項。此方法必須在評估之前調用,並且每個模塊隻能調用一次。
該函數應返回 Module
對象或最終解析為 Module
對象的 Promise
。返回的Module
必須滿足以下兩個不變量:
- 它必須與父級
Module
屬於相同的上下文。 - 它的
status
不能是'errored'
。
如果返回的 Module
的 status
是 'unlinked'
,則將在返回的 Module
上使用提供的相同 linker
函數遞歸調用此方法。
link()
返回一個 Promise
,當所有鏈接實例解析為有效的 Module
時,該 Promise
將被解析,或者如果鏈接器函數拋出異常或返回無效的 Module
則被拒絕。
鏈接器函數大致對應於 ECMAScript 規範中實現定義的HostResolveImportedModule 抽象操作,有幾個關鍵區別:
- 當HostResolveImportedModule 是同步的時,鏈接器函數可以是異步的。
在模塊鏈接期間使用的實際HostResolveImportedModule 實現是返回鏈接期間鏈接的模塊的實現。由於此時所有模塊都已完全鏈接,因此 HostResolveImportedModule 實現按照規範是完全同步的。
對應於 ECMAScript 規範中 Cyclic Module Record 的 Link() concrete method 字段。
相關用法
- Node.js vm.Module用法及代碼示例
- Node.js vm.SyntheticModule.setExport(name, value)用法及代碼示例
- Node.js vm.SourceTextModule.createCachedData()用法及代碼示例
- Node.js vm.createContext([contextObject[, options]])用法及代碼示例
- Node.js vm.runInThisContext(code[, options])用法及代碼示例
- Node.js vm.isContext()用法及代碼示例
- Node.js vm.measureMemory([options])用法及代碼示例
- Node.js vm.runInNewContext()用法及代碼示例
- Node.js vm.SyntheticModule用法及代碼示例
- Node.js vm.runInNewContext(code[, contextObject[, options]])用法及代碼示例
- Node.js vm.createContext()用法及代碼示例
- Node.js vm.Script.createCachedData()用法及代碼示例
- Node.js vm.runInThisContext()用法及代碼示例
- Node.js vm.Script.runInNewContext([contextObject[, options]])用法及代碼示例
- Node.js vm.runInContext()用法及代碼示例
- Node.js vm.Script.runInThisContext([options])用法及代碼示例
- Node.js vm.runInContext(code, contextifiedObject[, options])用法及代碼示例
- Node.js vm.Script.runInContext(contextifiedObject[, options])用法及代碼示例
- Node.js v8.getHeapSpaceStatistics()用法及代碼示例
- Node.js v8.deserializer.readRawBytes()用法及代碼示例
- Node.js v8.deserializer.readUint32()用法及代碼示例
- Node.js v8.serializer.writeRawBytes()用法及代碼示例
- Node.js v8.writeHeapSnapshot([filename])用法及代碼示例
- Node.js v8.Deserializer.readUint32()用法及代碼示例
- Node.js v8.getHeapCodeStatistics()用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 vm.Module.link(linker)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。