JavaScript中的Module.exports
JavaScript中的Module.exports,javascript,module.exports,Javascript,Module.exports,module.exports=testMethod之间的差异是什么和module.exports={testMethod}
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可能会让您陷入困境。
因此,请注意,我最近也遇到了同样的问题,在使用ES6module.exports=router
重构到某个Js文件(使用express的节点项目)的末尾后,就完成了
对我来说很奇怪,在Aws上的Cloud9上我没有问题。从VSCode,在ES5或ES6版本之间切换到Js可能会让你走上一条糟糕的道路。
因此,请注意,我最近也遇到了同样的问题,在使用ES6module.exports=router
重构到某个Js文件(使用express的节点项目)的末尾后,就完成了
对我来说很奇怪,在Aws上的Cloud9上,我没有问题。两者都用于将模块导出到外部函数。但是当您使用任何回调函数时
module.exports = somectrl
那么它将失败,但是
module.exports = { somectrl }
因为当您创建一个对象时,它实际上实例化了它,但是当您传递一个ref函数/const函数名时,它将作为一个不正常工作的现有函数
你可以这样做来工作
module.exports = somectrl()
或
两者都用于将模块导出到外部函数。但是当您使用任何回调函数时
module.exports = somectrl
那么它将失败,但是
module.exports = { somectrl }
因为当您创建一个对象时,它实际上实例化了它,但是当您传递一个ref函数/const函数名时,它将作为一个不正常工作的现有函数
你可以这样做来工作
module.exports = somectrl()
或
第一个导出testMethod
不管是什么,第二个导出具有属性testMethod
的对象,其值为testMethod
——这可能与错误无关。您可以分享一个吗?一个使用对象速记语法将其包装在对象中,另一个不使用。这都是正常的js语法,而不是任何神奇的特殊东西。它只是a,a=1的区别是什么;b=a和a=1;b={a}?我明白了,重点是一个导出是一个对象,另一个不是。谢谢…第一个导出testMethod
不管是什么,第二个导出具有属性testMethod
的对象,其值为testMethod
——这可能与错误无关。您可以分享一个吗?一个使用对象速记语法将其包装在对象中,另一个不使用。这都是正常的js语法,而不是任何神奇的特殊东西。它只是a,a=1的区别是什么;b=a和a=1;b={a}?我明白了,重点是一个导出是一个对象,另一个不是。谢谢