Node require executes code twice for mongoose Schemas
我在要求执行代码两次时遇到问题。在标准的Express应用程序上,我构建了Mongoose模式,每个模式都包含在自己的文件中,然后导出它们。
1 2 3 4 5 6 | //user.js const User = mongoose.model('User', userSchema) module.exports = User //In other files const User = require('../models/User') |
现在我在应用程序的两个地方使用它,并得到一个错误消息说
1 | Cannot overwrite `User` model once compiled. |
所以上面的代码被调用了两次,因为它是目前创建模型的唯一代码。但是,我希望节点只执行一次,因为它在我的代码中是必需的。
真正奇怪的是,从Git查看早期版本时,我会得到相同的错误,而与我一起工作的人也会得到相同的错误。所以我不知道该在哪里寻找解决方案。
现在找到了解决方案。
原来我需要这个模块一次作为
关于这个问题有很多讨论:
一问题
另一问题
老公关
这似乎是由于Windows解析路径不区分大小写,而其他系统解析路径区分大小写,因此节点对大小写敏感。
一个新的"原因"模块被执行。简单的要求是两次拼写小写解决了这个问题。
我认为问题出在"const"中,您使用它来声明变量"user"。尝试使用"var"而不是。
1 2 3 4 5 6 | //user.js var User = mongoose.model('User', userSchema) module.exports = User //In other files var User = require('../models/User') |
P/S:这是一个关于"const"和"var"的链接:
在javascript中常量?什么时候用,有必要吗
希望对您有所帮助!