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

Express项目使用Consign配置路由无法加载对应目录的问题求助

问题原因及解决方法

1. consign未加载控制器目录

你当前的consign配置仅加载了中间件和路由文件,没有将控制器所在目录加入加载链,所以app.src.controllers根本不存在,自然无法读取对应的控制器对象。
修改入口文件的consign配置,加入controllers目录的加载逻辑,注意路径和你实际存放控制器的目录保持一致:

consign()
  .then('./src/config/middlewares.js')
  // 新增控制器目录加载逻辑
  .then('./src/controllers')
  .then('./src/routes.js')
  .into(app)

2. 控制器代码变量名不匹配

你在控制器里定义的方法名为store,但导出时返回的是{create},变量完全不匹配,就算能找到控制器也读取不到store方法,修改控制器代码:

module.exports = app => {
  const store = (req, res) => {
    res.send('user stored');
  }
  // 导出的属性名要和定义的方法名一致
  return { store }
}

3. 拼写错误

从报错信息可以看到你在路由里写的是UserControler,少了一个字母l,正确拼写是UserController,要和你的控制器文件名完全保持一致:

module.exports = app => {
  app.route('/users')
    .post(app.src.controllers.UserController.store)
}

4. 冗余代码可删除

入口文件里的const routes = require('./routes');是多余配置,你已经通过consign加载了路由规则,不需要手动引入,删除即可避免逻辑冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:06:01