关于nodejs的require顺序

复制代码
---------------------------------------
        check /home/somebody/node_modules/othermodule
        check /home/somebody/node_modules/othermodule.js
        check /home/somebody/node_modules/othermodule.json
        check /home/somebody/node_modules/othermodule.node
---------------------------------------
if /home/somebody/node_modules/othermodule/package.json exists
        check /home/somebody/node_modules/othermodule/package.json[main]
---------------------------------------
if /home/somebody/node_modules/othermodule/index.js exists
        check /home/somebody/node_modules/othermodule/index.js
---------------------------------------
if /home/somebody/node_modules/othermodule/index.node exists
        check /home/somebody/node_modules/othermodule/index.node
---------------------------------------
        check /home/node_modules/othermodule
        check /home/node_modules/othermodule.js
        check /home/node_modules/othermodule.json
        check /home/node_modules/othermodule.node
---------------------------------------
if /home/node_modules/othermodule/package.json exists
        check /home/node_modules/othermodule/package.json[main]
---------------------------------------
if /home/node_modules/othermodule/index.js exists
        check /home/node_modules/othermodule/index.js
---------------------------------------
if /home/node_modules/othermodule/index.node exists
        check /home/node_modules/othermodule/index.node
---------------------------------------
        check /node_modules/othermodule
        check /node_modules/othermodule.js
        check /node_modules/othermodule.json
        check /node_modules/othermodule.node
---------------------------------------
if /node_modules/othermodule/package.json exists
        check /node_modules/othermodule/package.json[main]
---------------------------------------
if /node_modules/othermodule/index.js exists
        check /node_modules/othermodule/index.js
---------------------------------------
if /node_modules/othermodule/index.node exists
        check /node_modules/othermodule/index.node
---------------------------------------

for each $PATH in $NODE_PATH

---------------------------------------
if $PATH/package.json exists
        check $PATH/package.json[main]
---------------------------------------
if $PATH/index.js exists
        check $PATH/index.js
---------------------------------------
if $PATH/index.node exists
        check $PATH/index.node
---------------------------------------
if $HOME/.node_modules/package.json exists
        check $HOME/.node_modules/package.json[main]
---------------------------------------
if $HOME/.node_modules/index.js exists
        check $HOME/.node_modules/index.js
---------------------------------------
if $HOME/.node_modules/index.node exists
        check $HOME/.node_modules/index.node
---------------------------------------
if $HOME/.node_libraries/package.json exists
        check $HOME/.node_libraries/package.json[main]
---------------------------------------
if $HOME/.node_libraries/index.js exists
        check $HOME/.node_libraries/index.js
---------------------------------------
if $HOME/.node_libraries/index.node exists
        check $HOME/.node_libraries/index.node
---------------------------------------
if $PREFIX/lib/node/package.json exists
        check $PREFIX/lib/node/package.json[main]
---------------------------------------
if $PREFIX/lib/node/index.js exists
        check $PREFIX/lib/node/index.js
---------------------------------------
if $PREFIX/lib/node/index.node exists
        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/什么的。

posted @ 2015-03-25 09:49  低调的大白兔  阅读(715)  评论(0编辑  收藏  举报