You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express框架Route.post()报错:需回调函数却获undefined求助

解决Express路由错误:Route.post() requires a callback function but got a [object Undefined]

错误信息

D:\server\node_modules\express\lib\router\route.js:216
        throw new Error(msg);
        ^

Error: Route.post() requires a callback function but got a [object Undefined]
    at Route.<computed> [as post] (D:\server\node_modules\express\lib\router\route.js:216:15)
    at proto.<computed> [as post] (D:\server\node_modules\express\lib\router\index.js:521:19)
    at Object.<anonymous> (D:\server\routes\auth.js:8:8)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Module._load (node:internal/modules/cjs/loader:1024:12)
    at Module.require (node:internal/modules/cjs/loader:1233:19)
    at require (node:internal/modules/helpers:179:18)
    at Object.<anonymous> (D:\server\routes\index.js:5:20)

Node.js v20.14.0
[nodemon] app crashed - waiting for file changes before starting...

问题根源

错误集中在controller/auth.js文件,存在两处关键问题:

  • 导出语法错误:最后一行的module.export缺少末尾的s,正确写法是module.exports,此错误导致整个模块导出undefined,路由文件引入的控制器自然也是undefined。
  • 函数名不匹配:文件内定义的控制器函数是registerController和loginController,但导出时写的是regController和logController,名称完全不符,即便导出语法正确,也无法获取对应函数。

修正后的controller/auth.js代码

const { regService, logService } = require('../service/auth');

const registerController = async (req, res, next) => {
    const { name, email} = req.body;

    if (!name || !email) {     // 补全原代码缺失的闭合括号
        return res.status(400).json({ message: "Invalid Data" })
    }

    try {
        const user = await regService({ name, email })
        return res.status(200).json({ message: "User created successfully", user })
    } catch (error) {
        next(error);
    }
};

const loginController = async (req, res, next) => {
    const { email, password } = req.body
    try {
        const token = await logService({ email, password });
        return res.status(200).json({ message: "Login Successfull", token });
    } catch (e) {
        next(e);
    }
};

// 修正导出语法与函数名对应关系
module.exports = { 
    regController: registerController, 
    logController: loginController 
};

另外补充了registerController中if条件缺失的闭合括号,避免后续出现语法错误。

内容的提问来源于stack exchange,提问作者President Jam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:08:15