nodejs中require的路径是一个文件夹时发生了什么-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

nodejs中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则报错


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7089408.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: