解析算法
🌐 Resolution algorithm
当遇到一个裸指定符时:
🌐 When a bare specifier is encountered:
- Node.js 决定哪个包来处理解析请求。
- 如果可能的话,应该向解析算法提供导入文件的包 ID。
- 如果不行,解析器会检查文件路径是否在从它的
url解码出来的任何包位置中。
- 如果没有提供包 ID,并且导入的文件不在任何映射的包中,就会抛出
ERR_PACKAGE_MAP_EXTERNAL_FILE错误。 - Node.js 会在导入包的
dependencies对象中查找指定符的包名,以找到对应的包键。 - 如果找到,解析算法会从包映射中的包的
url字段定位目标包的位置。 - 如果指定符不在
dependencies中,就会抛出MODULE_NOT_FOUND错误。 - 包的位置会转发到常规的 Node.js 解析算法来完成解析(
index.js、exports 字段等)。
更多细节可以在归结算法伪代码中找到。
🌐 More details can be found in the resolution algorithm pseudo-code.