启动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
相关产品推荐
相关产品推荐

