问题描述
module.exports = testMethod ;
和 module.exports = { testMethod } ;
之间有什么不同 因为当我使用 module.exports = testMethod ;
时,它会抛出如下错误。
错误:Route.get() 需要一个回调函数,但得到了一个 [object Undefined]
但我对module.exports = { testMethod } ;
整个代码是
const testMethod = asyncErrorWrapper(async (req,res,next) => {
const information = req.body;
const question = await Question.create({
title: information.title,content: information.content,user: req.user.id,});
res.status(200).json({
success: true,data: question,});
});
module.exports = { testMethod };
解决方法
在 VSCode 中,在 ES5 或 ES6 版本之间切换到 Js 可能会让你走上糟糕的道路。
所以,小心点,我最近遇到了同样的问题,在 ES6 module.exports = router
上使用重构到一些 Js 文件的末尾(使用 express 的 Node 项目)后,它就完成了。
对我来说很奇怪,在 Aws 上的 Cloud9 上我没有问题。
,两者都用于将您的模块导出到外部函数。但是当您使用带有
的任何回调函数时module.exports = somectrl
然后它会失败但是
module.exports = { somectrl }
因为当您创建一个对象时,它实际上会实例化它,但是当您传递一个 ref 函数/ const 函数名称时,它将表现为一个无法正常工作的现有函数。
你可以做这样的事情来工作,
module.exports = somectrl()
或
module.exports = new somectrl()