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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。