有时代码会让你发疯,因为你知道答案必须简单。
考虑这个工作函数(我使用firestore
):
async function getHousing(id) {
const housing = await db
.collection('HOUSINGS')
.doc(id)
.get()
.then(doc => {
if (!doc.exists) logger.debug('No such housing')
return doc.data()
})
.catch(e => {
logger.error(e)
return
})
return housing
}
module.exports.getHousing = getHousing
当我在某处使用它时,requiring
相应地,它就像一个魅力,也就是没有错误:
const { getHousing } = require('../models/housing')
async function getHousings(user) {
...
for (let house of allowedHousings) {
let housing = await getHousing(id)
}
...
return someStuff
}
但是,当我在其他地方使用它时,需要采用相同的方法,我收到了一个错误:error: getHousing is not a function
const { getHousing } = require('../models/housing')
async function saveProp(data) {
try {
await db
.collection('PROPS')
.doc(data.ID.PROP)
.set(data)
// data.ID.HOUSING is the correct ID
const housing = await getHousing(data.ID.HOUSING)
return housing
} catch (e) {
logger.error(e)
}
}
我真的不明白为什么。你有什么线索吗?谢谢
编辑:事实上,当我切换另一个异步功能也工作在某处(saveHousing()
),它不再工作到saveProp()
fn ...很奇怪,但不帮我调试这个...
经过一段时间试图调试......我找到了答案,功能完美无缺,但有一种循环依赖与我所有的require()
。
将const { deleteProp } = require('../models/prop')
移动到函数内而不是文件顶部后,它可以工作。