1. ---------------------------------------
  2. check /home/somebody/node_modules/othermodule
  3. check /home/somebody/node_modules/othermodule.js
  4. check /home/somebody/node_modules/othermodule.json
  5. check /home/somebody/node_modules/othermodule.node
  6. ---------------------------------------
  7. if /home/somebody/node_modules/othermodule/package.json exists
  8. check /home/somebody/node_modules/othermodule/package.json[main]
  9. ---------------------------------------
  10. if /home/somebody/node_modules/othermodule/index.js exists
  11. check /home/somebody/node_modules/othermodule/index.js
  12. ---------------------------------------
  13. if /home/somebody/node_modules/othermodule/index.node exists
  14. check /home/somebody/node_modules/othermodule/index.node
  15. ---------------------------------------
  16. check /home/node_modules/othermodule
  17. check /home/node_modules/othermodule.js
  18. check /home/node_modules/othermodule.json
  19. check /home/node_modules/othermodule.node
  20. ---------------------------------------
  21. if /home/node_modules/othermodule/package.json exists
  22. check /home/node_modules/othermodule/package.json[main]
  23. ---------------------------------------
  24. if /home/node_modules/othermodule/index.js exists
  25. check /home/node_modules/othermodule/index.js
  26. ---------------------------------------
  27. if /home/node_modules/othermodule/index.node exists
  28. check /home/node_modules/othermodule/index.node
  29. ---------------------------------------
  30. check /node_modules/othermodule
  31. check /node_modules/othermodule.js
  32. check /node_modules/othermodule.json
  33. check /node_modules/othermodule.node
  34. ---------------------------------------
  35. if /node_modules/othermodule/package.json exists
  36. check /node_modules/othermodule/package.json[main]
  37. ---------------------------------------
  38. if /node_modules/othermodule/index.js exists
  39. check /node_modules/othermodule/index.js
  40. ---------------------------------------
  41. if /node_modules/othermodule/index.node exists
  42. check /node_modules/othermodule/index.node
  43. ---------------------------------------
  44.  
  45. for each $PATH in $NODE_PATH
  46.  
  47. ---------------------------------------
  48. if $PATH/package.json exists
  49. check $PATH/package.json[main]
  50. ---------------------------------------
  51. if $PATH/index.js exists
  52. check $PATH/index.js
  53. ---------------------------------------
  54. if $PATH/index.node exists
  55. check $PATH/index.node
  56. ---------------------------------------
  57. if $HOME/.node_modules/package.json exists
  58. check $HOME/.node_modules/package.json[main]
  59. ---------------------------------------
  60. if $HOME/.node_modules/index.js exists
  61. check $HOME/.node_modules/index.js
  62. ---------------------------------------
  63. if $HOME/.node_modules/index.node exists
  64. check $HOME/.node_modules/index.node
  65. ---------------------------------------
  66. if $HOME/.node_libraries/package.json exists
  67. check $HOME/.node_libraries/package.json[main]
  68. ---------------------------------------
  69. if $HOME/.node_libraries/index.js exists
  70. check $HOME/.node_libraries/index.js
  71. ---------------------------------------
  72. if $HOME/.node_libraries/index.node exists
  73. check $HOME/.node_libraries/index.node
  74. ---------------------------------------
  75. if $PREFIX/lib/node/package.json exists
  76. check $PREFIX/lib/node/package.json[main]
  77. ---------------------------------------
  78. if $PREFIX/lib/node/index.js exists
  79. check $PREFIX/lib/node/index.js
  80. ---------------------------------------
  81. if $PREFIX/lib/node/index.node exists
  82. check $PREFIX/lib/node/index.node

简单来说,如果是require('x')这样开头不是相对or绝对地址符号,尾巴也没说是.js或者.json的,就当做模块来找。先找是不是core module,然后一级一级向上看node_modules文件夹,每一级的node_modules先看里面是否有basename为所找的文件,再看是否有模块名文件夹下package.json的main标明的文件,然后不死心地看看模块名文件夹下有没有index.js和index.node。最后找不到的话,还要搜一遍全局环境,比如$HOME/.node_modules/什么的。

关于nodejs的require顺序的更多相关文章

  1. [代码]解析nodejs的require,吃豆人的故事

    最近在项目中需要对nodejs的require关键字做解析,并且替换require里的路径.一开始我希望nodejs既然作为脚本语言,内核提供一个官方的parser库应该是一个稳定可靠又灵活的渠道,然 ...

  2. nodejs开发——require与exports的使用

    nodejs开发——require与exports的使用 另一片文章总结:http://www.cnblogs.com/hfultrastrong/p/8036682.html require req ...

  3. nodejs的require模块及路径

    在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文 ...

  4. 学会Nodejs 的require和exports

    NodeJs中模块的导入和导出,是最基本的概念,但是看了之后,心里还是有一些疑惑的地方,比如: 1.有两个文件:part.js 和 main.js,main.js中要想使用part.js中定义的变量和 ...

  5. NodeJs中require use get typescript及其他知识点集合

    NodeJs的Express使用 nodejs事件的监听与事件的触发 TypeScript学习笔记 深入浅出Node.js Nodejs开发Office插件 类百度文库文档上传.转换和展示功能项目开源 ...

  6. nodejs的require是如何执行的

    通常,在Node.js里导入是通过 require函数调用进行的. Node.js会根据 require的是相对路径还是非相对路径做出不同的行为. 相对路径 相对路径很简单. 例如,假设有一个文件路径 ...

  7. nodejs中 require 方法的加载规则

    require参数类型 http.fs.path等,原生模块 ./mod或../mod,相对路径的文件模块 /pathtomodule/mod,绝对路径的文件模块 mod,非原生模块的文件模块 在进 ...

  8. nodejs module/require

    1. wrap up a module using module.exports, name the file to a.js var fun1=function(){ var stylus = re ...

  9. nodejs中require的路径是一个文件夹时发生了什么

    node中使用require的时候如果路径是一个文件夹时,或者特殊的情况require('..');require('.'); 这是node实战这本书里说的情况,但是我在node6.9版本中发现不完全 ...

随机推荐

  1. 如何使用 AngularJS 的 ngShow 和 ngHide

    今天我们来看看怎样使用Angular的ngShow 和ngHide 指令来完成它们听起来应该完成的,显示和隐藏! 它们应该做的事 ngShow 和ngHide 允许我们显示或隐藏不同的元素.这有助于创 ...

  2. Java良葛格 学习笔记

    学习一个新的事物时,如果遇到一些概念无法很快理解,这可能是因为要理解概念会需要其它概念先建立起来,所以先暂时放下这个疑问也是一个学习方法,称之为“存疑” ,在以后的学习过程中待必要的概念学会后,目前的 ...

  3. eclipse如何快速抽取样式(style)或者include

    在视图模式上选中要抽取的模块,然后点击右键就可以抽取了

  4. 关于WIFI DIRECT功能的

    http://processors.wiki.ti.com/index.php/WiFi_Direct_Configuration_Scripts#p2p_find      https://wire ...

  5. NDK编译应用程序

    Android源码目录下的build/envsetup.sh文件,描述编译的命令 - m:       Makes from the top of the tree. - mm:      Build ...

  6. Django Template模板

    Django Template 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. 下面我们来调用html views def ind ...

  7. 网站网址前的小logo

    认识网页前小图标 1.能在浏览器标签.地址栏左边和收藏夹栏显示小图标的网站,其网站都是使用了其名称为"favicon.ico"图标文件,格式为ico格式,图标大小一般为16*16, ...

  8. UVA 11992 线段树

    input r c m      r<=20,1<=m<=20000 m行操作 1 x1 y1 x2 y2 v       add v 2 x1 y1 x2 y2 v       s ...

  9. div.2/Bellovin<最长上升子序列>

    题意: 序列arr[i--n];输出以a[i]为结尾的最长上升子序列.1<=n<=100000; 思路: O(n*log(n)),求最长上升子序列. #include<cstdio& ...

  10. LoadRunner参数化

    在场景中,每一个vuser能够按照取唯一值的策略,是unique one , 出现84800错误有以下2种(自我实验中得出) 1.vuser的个数大于参数给定的个数 2.vuser初始时间不够,在可通 ...