Node.js+Express+MySQL API报错Route.post()需回调函数,求解决
解决Express中Route.post()回调函数未定义的错误
这个错误的核心原因是你给Route.post()传入的回调参数是undefined,而非预期的函数。以下是具体排查和解决步骤:
检查Controller方法的导出是否正确
在Category.controller.js中,确保你要用于POST路由的方法已经通过module.exports(CommonJS)或export(ES模块)正确导出。
错误示例:// 只定义了函数但未导出 const createCategory = async (req, res) => { // ...业务逻辑 }正确示例(CommonJS):
const createCategory = async (req, res) => { // ...业务逻辑 } module.exports = { createCategory }; // 导出目标方法检查Router中对Controller方法的引入是否正确
在Category.route.js中,确认你引入的Controller方法名称和导出的名称完全一致,没有拼写错误或大小写问题。
错误示例:const categoryController = require('./Category.controller'); // 导出的是createCategory,这里写成了createCat router.post('/categories', categoryController.createCat);正确示例:
const { createCategory } = require('./Category.controller'); router.post('/categories', createCategory);验证模块引入路径的正确性
确认Router中引入Controller的相对路径没有错误,文件名的拼写(包括大小写)要和实际文件完全匹配(Linux/macOS系统对文件名大小写敏感)。
错误示例:// 实际文件是Category.controller.js,这里写成了小写开头 const categoryController = require('./category.controller');正确示例:
const categoryController = require('./Category.controller');确认路由配置时传入的是函数而非其他值
检查Route.post()的第二个参数,确保它确实是一个处理请求的函数。比如不要误传Service层未处理req/res的方法,或是未初始化的变量。
内容的提问来源于stack exchange,提问作者Nadula
相关产品推荐
相关产品推荐

