如果我使用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'时出现错误

为什么?

最佳答案

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

当您仅修改(或“增强”)导出对象时,两者都将起作用,因为它们都引用同一对象。但是,一旦打算替换对象,则必须将替换设置为module.export

Modules(重点是我):


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

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

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

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

关于node.js - 使用导出但使用module.exports时出现错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16799937/

10-11 14:46