关于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/什么的。
关于nodejs的require顺序的更多相关文章
- [代码]解析nodejs的require,吃豆人的故事
最近在项目中需要对nodejs的require关键字做解析,并且替换require里的路径.一开始我希望nodejs既然作为脚本语言,内核提供一个官方的parser库应该是一个稳定可靠又灵活的渠道,然 ...
- nodejs开发——require与exports的使用
nodejs开发——require与exports的使用 另一片文章总结:http://www.cnblogs.com/hfultrastrong/p/8036682.html require req ...
- nodejs的require模块及路径
在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文 ...
- 学会Nodejs 的require和exports
NodeJs中模块的导入和导出,是最基本的概念,但是看了之后,心里还是有一些疑惑的地方,比如: 1.有两个文件:part.js 和 main.js,main.js中要想使用part.js中定义的变量和 ...
- NodeJs中require use get typescript及其他知识点集合
NodeJs的Express使用 nodejs事件的监听与事件的触发 TypeScript学习笔记 深入浅出Node.js Nodejs开发Office插件 类百度文库文档上传.转换和展示功能项目开源 ...
- nodejs的require是如何执行的
通常,在Node.js里导入是通过 require函数调用进行的. Node.js会根据 require的是相对路径还是非相对路径做出不同的行为. 相对路径 相对路径很简单. 例如,假设有一个文件路径 ...
- nodejs中 require 方法的加载规则
require参数类型 http.fs.path等,原生模块 ./mod或../mod,相对路径的文件模块 /pathtomodule/mod,绝对路径的文件模块 mod,非原生模块的文件模块 在进 ...
- nodejs module/require
1. wrap up a module using module.exports, name the file to a.js var fun1=function(){ var stylus = re ...
- nodejs中require的路径是一个文件夹时发生了什么
node中使用require的时候如果路径是一个文件夹时,或者特殊的情况require('..');require('.'); 这是node实战这本书里说的情况,但是我在node6.9版本中发现不完全 ...
随机推荐
- 如何使用 AngularJS 的 ngShow 和 ngHide
今天我们来看看怎样使用Angular的ngShow 和ngHide 指令来完成它们听起来应该完成的,显示和隐藏! 它们应该做的事 ngShow 和ngHide 允许我们显示或隐藏不同的元素.这有助于创 ...
- Java良葛格 学习笔记
学习一个新的事物时,如果遇到一些概念无法很快理解,这可能是因为要理解概念会需要其它概念先建立起来,所以先暂时放下这个疑问也是一个学习方法,称之为“存疑” ,在以后的学习过程中待必要的概念学会后,目前的 ...
- eclipse如何快速抽取样式(style)或者include
在视图模式上选中要抽取的模块,然后点击右键就可以抽取了
- 关于WIFI DIRECT功能的
http://processors.wiki.ti.com/index.php/WiFi_Direct_Configuration_Scripts#p2p_find https://wire ...
- NDK编译应用程序
Android源码目录下的build/envsetup.sh文件,描述编译的命令 - m: Makes from the top of the tree. - mm: Build ...
- Django Template模板
Django Template 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. 下面我们来调用html views def ind ...
- 网站网址前的小logo
认识网页前小图标 1.能在浏览器标签.地址栏左边和收藏夹栏显示小图标的网站,其网站都是使用了其名称为"favicon.ico"图标文件,格式为ico格式,图标大小一般为16*16, ...
- 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 ...
- div.2/Bellovin<最长上升子序列>
题意: 序列arr[i--n];输出以a[i]为结尾的最长上升子序列.1<=n<=100000; 思路: O(n*log(n)),求最长上升子序列. #include<cstdio& ...
- LoadRunner参数化
在场景中,每一个vuser能够按照取唯一值的策略,是unique one , 出现84800错误有以下2种(自我实验中得出) 1.vuser的个数大于参数给定的个数 2.vuser初始时间不够,在可通 ...