如果我使用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/