创建Express后端API遇用户注册错误:TypeError: res.status is not a function
解决
res.status is not a function 错误 可能的原因及修复步骤
1. 检查路由配置是否正确
确保你在Express路由中直接传递控制器函数引用,而非提前调用它。错误的调用方式会导致req、res对象无法被正确注入:
错误示例:
// 错误:提前调用函数,res未获取到Express响应对象 router.post('/register', userRegister())
正确写法:
// 正确:传递函数引用,Express自动传入req、res、next router.post('/register', userRegister)
2. 修复代码拼写错误
你的代码里存在一处拼写错误:res.status(200).jsom 应改为 res.status(200).json,该错误虽不是当前报错的直接原因,但修复后才能正常返回JSON响应。
修正后的控制器代码:
import userModel from '../models/userModel.js'; const userRegister = async (req, res, next) => { try { res.status(200).json({ success: true, message: "All work" }) } catch (error) { console.log("Error in User Register", error); // 建议将错误传递给Express全局错误处理中间件 next(error); } }; export { userRegister };
3. 确认控制器参数顺序
确保控制器函数的参数顺序为 (req, res, next),Express会严格按此顺序传递对象。若顺序颠倒(如写成res, req, next),会导致res变量实际指向req对象,自然不存在status方法。
内容的提问来源于stack exchange,提问作者Aniket Kumar
相关产品推荐
相关产品推荐

