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

启动Node服务报错Route.get()得到undefined而非回调函数如何解决

问题排查与解决方案

报错原因

触发Error: Route.get() requires a callback function but got a [object Undefined]的核心问题出在controller.js的代码结构错误:

  • exports.displaybyid 被错误定义在exports.displayrestapi的函数内部,属于局部作用域的导出,没有挂载到顶层的exports对象上
  • 当routes.js读取jsonku.displaybyid时,该属性不存在,值为undefined,不符合Express路由方法要求传入回调函数的规则,因此抛出报错

修复方案

调整controller.js的代码结构,将exports.displaybyid移到exports.displayrestapi的函数外部即可,修正后的完整代码如下:

'use strict';

var response = require('./res');
var connection = require('./connection');

exports.index = function (req, res) {
    response.ok("REST API!", res)
};

//display all restapi data
exports.displayrestapi = function (req, res) {
    connection.query('SELECT * FROM restapi', function (error, rows, fileds) {
        if (error) {
            console.log(error);
        } else {
            response.ok(rows, res)
        }
    });
};

//display all restapi data by id
exports.displaybyid = function (req, res) {
    let id = req.params.id;
    connection.query('SELECT * FROM restapi WHERE id = ?', [id],
        function (error, rows, fields) {
            if (error) {
                console.log(error);
            } else {
                response.ok(rows, res);
            }
        });
};

验证效果

修改保存后重新运行node server.js,服务即可正常启动,所有路由规则都会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:15:04