这篇文章解释得很好了:http://timnew.github.io/blog/2012/04/20/exports_vs_module_exports_in_node_js/
简单说一下,exports只是一个普通变量,它由module system产生,而所谓的module system,就是module对象本身,但create不意味着是它的一个属性,所以module.exports!=exports,如果想让exports等于module.exports,那么必须手动赋值,var exports=module.exports。这就产生了我们在别人的module里看到的常见的写法:
exports=module.exports={}
上述链接里有清楚地从node.js的官方文档里挖掘每一句话的释疑过程,看一下就清楚了。