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

调用跨文件函数后出现TypeError: Cannot read property 'status' of undefined错误求助

错误排查:TypeError: Cannot read property 'status' of undefined

错误原因

  • 函数调用方式错误:你在server.js中直接执行chkMaintenanceMode(),但该函数作为Express中间件,需要接收req、res、next三个参数,手动调用时未传递任何参数,导致res为undefined,访问res.status自然抛出错误。
  • 函数内部逻辑缺陷:错误处理不规范,遇到数据库查询错误时直接return false,未将错误传递给Express的错误处理机制;同时未处理result不存在的场景,会导致请求无响应挂起。

解决方案

1. 修正函数调用方式

该函数是Express中间件,需绑定到路由上,由Express在处理请求时自动传入参数,而非直接执行。修改server.js中的调用代码:

const { chkMaintenanceMode } = require('./maintenance.js');
// 将中间件绑定到指定路由,示例为GET请求的/check-maintenance路径
app.get('/check-maintenance', chkMaintenanceMode);

2. 完善函数内部逻辑

修正错误处理和无结果场景的响应:

exports.chkMaintenanceMode = function (req, res, next) {
  Configuration.findOne({meta_group: 'maintenance_mode'}).exec(function (err, result) {
    if(err) {
      // 将错误传递给Express错误处理中间件
      return next(err);
    }
    if(result){
      console.log("result", result)
      return res.status(200).json({
        data: result,
        reply: "",
        meta: req.phoneMeta
      });
    }
    // 处理未找到配置的情况,返回404响应
    return res.status(404).json({
      data: null,
      reply: "Maintenance mode configuration not found",
      meta: req.phoneMeta
    });
  });
};

内容的提问来源于stack exchange,提问作者Jaya Kumari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:43:18