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

如何在Express Server中加载不同文件夹下的API Endpoints

问题原因

你现有的第一版路由加载逻辑会读取routes/api目录下的所有条目,包含你新增的extras文件夹。当代码遍历到extras条目时,会直接尝试加载./routes/api/extras作为路由模块,但extras是文件夹而非可导入的JS路由文件,因此抛出MODULE_NOT_FOUND错误。

解决方案

修改原有普通API端点的加载逻辑,过滤掉文件夹,仅处理后缀为.js的路由文件,再保留你新增的extras目录加载逻辑即可,修改后的完整代码如下:

const fs = require('fs')
const path = require('path')

// 加载普通API端点
fs.readdirSync('./routes/api').forEach(r => {
  const entryPath = path.join('./routes/api', r)
  // 仅处理JS文件,跳过extras这类文件夹
  if (fs.statSync(entryPath).isFile() && r.endsWith('.js')) {
    const routeName = r.split('.')[0]
    app.use(`/api/v1/${routeName}`, require(`./routes/api/${routeName}`))
  }
})

// 加载extras目录下的工具类端点
fs.readdirSync('./routes/api/extras').forEach(r => {
  if (r.endsWith('.js')) {
    const routeName = r.split('.')[0]
    app.use(`/api/v1/extras/${routeName}`, require(`./routes/api/extras/${routeName}`))
  }
})

可选优化:如果后续可能新增更多子目录,可编写递归遍历逻辑自动识别子目录、生成对应路由前缀,无需手动新增加载代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:18:03