看了阮一峰的网络日志 require() 源码解读后不懂

小白,看了文章发晕。。。大神有段代码是这样的`
// a.js
console.log('module.id: ', module.id);
console.log('module.exports: ', module.exports);
console.log('module.parent: ', module.parent);
console.log('module.filename: ', module.filename);
console.log('module.loaded: ', module.loaded);
console.log('module.children: ', module.children);
console.log('module.paths: ', module.paths);`
node运行`
$ node a.js

module.id: .
module.exports: {}
module.parent: null
module.filename: /home/ruanyf/tmp/a.js
module.loaded: false
module.children: []
module.paths: [ '/home/ruanyf/tmp/node_modules',
'/home/ruanyf/node_modules',
'/home/node_modules',
'/node_modules' ]`
我不懂module.filename不是给出了模块的绝对路径了吗,为什么后面module.paths还会给出模块的可能位置的数组,还添加了node_modules后缀,这样不是找不到a.js了吗?望指教

阅读 2.1k
1 个回答

如果 require 以相对路径开始,就会去找相对路径下的模块导出的内容。
如果 require 以绝对路径开始,就会依次冒泡寻找 node_modules ,这里的 module.filefile__filename 是一样的,但是 paths 就有可能是继续寻找 module 时的路径了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题