有时代码会让您发疯,因为您知道答案必须很简单。
考虑此工作功能(我使用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()
中不再起作用了……很奇怪,但无济于事我调试一下...
答案 0 :(得分:0)
经过一段时间的调试...我找到了答案,这些功能可以正常运行,但是我所有的require()
都有一种循环依赖。
将const { deleteProp } = require('../models/prop')
移入内部而不是位于文件顶部之后,该函数便可以正常工作。