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

引入外部文件时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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:55:19