require 文件夹

node中使用require的时候如果路径是一个文件夹时,或者特殊的情况require(‘..’);require(‘.’);



这是node实战这本书里说的情况,但是我在node6.9版本中发现不完全是这样,可能是后来做了修改。下面说说在6.9下require路径的过程。



这里以require(‘.’)说明,一个点说明要require当前目录,这时候,node会优先查找package.json这个文件(即使有index.js这个文件也会先被忽略),然后查找package.json文件里的main键值对应的值xx.js,然后拿到这个值进行加载相应的文件,否则,如果没有键值main或者没有找到xx.js则开始查找当前目录下有没有index.js,如果有则使用,否则出错。

以下文件都在一个文件夹下



example.js



var test = require(‘.’);
console.log(test.a);
package.js



{
“main”:”./test1.js”



}



test1.js



module.exports = {
a:1



}



index.js



module.exports = {
a:3



}



我们可以看到,执行example脚本时输出的是1,如果把main的项去掉或者把main对应的值改成不存在的文件,则会加载index.js,输出3,如果不存在这个index.js则报错


Category node