引入外部文件时Route.get()报错:需回调函数却获undefined
问题原因
你遇到的Error: Route.get() requires a callback function but got a [object Undefined]错误,核心是导入导出方式不匹配:
index.js中使用module.exports = getUsers属于默认导出test.js中用const { getUsers } = require("./index.js")是解构导入(仅适用于命名导出)
这种不匹配会导致getUsers变量被解析为undefined,Express路由找不到有效回调函数,从而抛出错误。
修复方案(二选一即可)
方案1:修改test.js的导入方式
将解构导入改为默认导入,匹配index.js的导出方式:
const express = require("express"); // 去掉解构大括号,直接导入默认导出的函数 const getUsers = require("./index.js"); const app = express(); const PORT = 3030; app.use(express.json()); // 建议将路由定义放在app.listen之前,这是更规范的写法 app.route("/users").get(getUsers); app.listen(PORT, () => { console.log(`Running this application on the PORT ${PORT}`); });
方案2:修改index.js的导出方式
如果想保留test.js的解构导入,可将index.js改为命名导出:
const axios = require("axios"); const BASE_URL = "http://localhost:1888"; function getUsers(req, res) { const headers = { "APP-API-Version": "v2", }; axios .get(`${BASE_URL}/users`, { headers }) .then((response) => { if (response.status === 200) { console.log(response.data); res.send(response.data); } }) .catch((e) => { console.error(e); }); } // 改为命名导出格式 module.exports = { getUsers };
内容的提问来源于stack exchange,提问作者Didi
相关产品推荐
相关产品推荐

