本人刚开始接触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属性,但是该模块却能被正常引用,上网查了一下,有人说这是核心模块,难道核心模块的引用顺序不一样吗?菜鸟求教
发现crypto这个模块是目录模块,WTF?
自己创建的crypto目录不算吧?
嗯嗯,我后来发现这个是自己建的模块,项目里并没有使用,还问一下,就算时自己建的模块,也应该有index.js文件或者package.json文件里面的main属性吧?
@wz_software: 可以有,也可以不要,反正都是源码级别的引入,只要能找到对应的文件就成。
@幻天芒: 如果这两个都没有,node在引入时是如何找到的呢?能不能解释一下啊?谢谢
@wz_software: 根据你给的具体路径去找,否则找不到。
@幻天芒: 这时候如果这两者都没有,在require时就必须指定明确的js文件是吧?
@wz_software: 是的,可以忽略后缀名。
@幻天芒: 明白了,谢谢啦