Javascript 节点:不需要为一个模块工作

Javascript 节点:不需要为一个模块工作,javascript,node.js,mongodb,mongoose,node-modules,Javascript,Node.js,Mongodb,Mongoose,Node Modules,找到的解决方案:原来问题是“循环”依赖关系。对于其他可能遇到此问题的人,我在这里找到了答案: 第一次问问题。我还在学习,我想我知道我在这里做什么,但我无法理解这一点 我正在与MongoDB/Mongoose合作一个节点项目。在我的文件顶部,我有: const {Institution} = require('./institution'); const {Student} = require('./student'); 当我运行程序并使用Institution.findOne()时,它会出错并

找到的解决方案:原来问题是“循环”依赖关系。对于其他可能遇到此问题的人,我在这里找到了答案:

第一次问问题。我还在学习,我想我知道我在这里做什么,但我无法理解这一点

我正在与MongoDB/Mongoose合作一个节点项目。在我的文件顶部,我有:

const {Institution} = require('./institution');
const {Student} = require('./student');
当我运行程序并使用
Institution.findOne()
时,它会出错并说
无法读取未定义的属性findOne
。我在其他几个文件中使用了
Institution
模型,它们都运行良好

在这一步之前,模型需要经过几个步骤,并且始终可以正常工作。由于该模型在其他情况下也适用,我认为出口产品运行良好

const Institution = database.model('Institution', InstitutionSchema);

module.exports = {
    Institution,
    InstitutionSchema
};
institution.js
student.js
与此文件位于同一文件夹中

当我执行
console.log(Student)
时,它返回巨大的Mongoose对象。 当我执行
console.log(Institution)
时,它返回
undefined

如果I
console.log(Institution)
来自它工作的另一个模块,它将返回
Mongoose对象

机构
收藏在我的数据库中,我可以在Robomongo viewer中查看内容

我是不是错过了一些我看不见的东西


提前感谢您的帮助。

我猜您可能在某个地方拼写错误,与属性或模块名称不匹配。我在您显示的代码中没有看到它,但这是您应该检查的。您可以加载整个模块:
const x=require('./institution')
,然后加载
console.log(x)
,查看预期属性是否存在。谢谢您的建议。如果我需要模块作为一个整体
const x=require('./institution')
并记录它,它将返回一个空对象
{}
。我已经检查了拼写。我甚至直接从它工作的模块中复制了它。Atom突出显示了它的所有用途,并且它匹配了文件中所有内容的拼写。我认为您需要重新检查您的文件系统。您可能有一个空的
institution.js
,它不知何故是从一个地方加载的,而不是从另一个地方加载的。您的所有文件都在同一目录中吗?是否有层次结构。如果没有拼写错误,唯一合乎逻辑的解释是您的
require('./institution')
没有找到正确的文件。这绝对有道理,但似乎不是问题所在。这令人困惑。我需要从指向models目录中文件的其他目录中获取
institution.js
。他们工作得很好。直到我从模型中的另一个文件指向同一目录中的它,它才有问题。但是,我可以很好地访问同一目录中的
student.js
。我试着在
student.js
中设置一个测试函数来访问
institution.js
,它在那里也返回一个空对象!感谢jfriend00的帮助。这让我重新表述了我的问题,这让我想到了两年前关于“循环依赖”的StackOverflow问题:。这就解释了问题所在。