首页 新闻 搜索 专区 学院

node.js的模块引用机制

0
悬赏园豆:10 [已解决问题] 解决于 2016-10-09 19:49

本人刚开始接触node.js,今天遇到一个问题,之前看书上说到:nodejs在引用模块时,会进行如下判断:

1.如果模块是文件,直接引用;

2.如果模块是目录,则去找package.json文件,如果没有该文件,则去找index.js,找到了则引用,找不到抛出异常,如果有package.json文件则转3

3.package.json文件里面有没有main属性,没有则抛出异常,有则转4;

4.main属性指定 的文件存在吗?如果不存在抛出异常,如果存在,则引用返回

 

上面是之前看到的node.js模块引用的顺序,但是今天在写代码时发现crypto这个模块是目录模块,但目录下既没有index.js,package.json里面也没有main属性,但是该模块却能被正常引用,上网查了一下,有人说这是核心模块,难道核心模块的引用顺序不一样吗?菜鸟求教

wz_software的主页 wz_software | 初学一级 | 园豆:170
提问于:2016-09-29 16:40
< >
分享
最佳答案
0

发现crypto这个模块是目录模块,WTF?

自己创建的crypto目录不算吧?

收获园豆:10
幻天芒 | 高人七级 |园豆:36608 | 2016-09-29 22:18

嗯嗯,我后来发现这个是自己建的模块,项目里并没有使用,还问一下,就算时自己建的模块,也应该有index.js文件或者package.json文件里面的main属性吧?

wz_software | 园豆:170 (初学一级) | 2016-10-08 09:43

@wz_software: 可以有,也可以不要,反正都是源码级别的引入,只要能找到对应的文件就成。

幻天芒 | 园豆:36608 (高人七级) | 2016-10-08 11:19

@幻天芒: 如果这两个都没有,node在引入时是如何找到的呢?能不能解释一下啊?谢谢

wz_software | 园豆:170 (初学一级) | 2016-10-08 11:58

@wz_software: 根据你给的具体路径去找,否则找不到。

幻天芒 | 园豆:36608 (高人七级) | 2016-10-08 17:04

@幻天芒: 这时候如果这两者都没有,在require时就必须指定明确的js文件是吧?

wz_software | 园豆:170 (初学一级) | 2016-10-08 17:41

@wz_software: 是的,可以忽略后缀名。

幻天芒 | 园豆:36608 (高人七级) | 2016-10-08 21:45

@幻天芒: 明白了,谢谢啦

wz_software | 园豆:170 (初学一级) | 2016-10-09 19:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册