我使用导出但使用module.exports时出错

时间:2013-05-28 19:30:11

标签: node.js

如果我使用module.exports = mongoose.model('People', PersonSchema, 'People');而不是以下代码正常工作

People = require("../models/people");
People.find(function (err, docs) {});

但是exports = mongoose.model('People', PersonSchema, 'People');People.find() TypeError: Object #<Object> has no method 'find'处{{1}}

获得错误

为什么?

1 个答案:

答案 0 :(得分:1)

这是因为module.exports的值是require()在其他模块中返回的值。 exports只是为方便起见而提供的module.exports的参考副本。

当你只是修改(或“ augmenting ”)导出对象时,要么都会工作,因为它们都引用同一个对象。但是,一旦您打算替换该对象,您必须将替换设置为module.export

来自Modules(强调我的):

  

请注意 exports 是对 module.exports 的引用,使其仅适用于 扩充 < / strong>即可。如果要导出单个项目(例如构造函数),则需要直接使用 module.exports

function MyConstructor (opts) {
  //...
}

// BROKEN: Does not modify exports
exports = MyConstructor;

// exports the constructor properly
module.exports = MyConstructor;