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

Express.js引入'./middlewares'模块失败问题求助

Express.js拆分中间件报错:Cannot find module './middlewares'

问题概述

原本单文件index.js可正常在3000端口启动服务器,拆分CORS和body-parser到独立文件后,出现错误:Error: Cannot find module './middlewares'。

项目文件夹结构:

  • project_folder
    • index.js
    • middlewares
      • cors.js
      • bodyParser.js
    • configs
      • server.js
      • database.js

错误原因及解决步骤

1. 解决模块找不到的问题

Node.js中require('./middlewares')会默认查找该文件夹下的index.js文件,而你的middlewares文件夹中没有这个文件,因此触发模块找不到的错误。有两种修复方案:

方案1:在middlewares文件夹添加index.js

创建middlewares/index.js,统一导出两个中间件:

const cors = require('./cors');
const bodyParser = require('./bodyParser');

module.exports = {
  cors,
  bodyParser
};

方案2:直接引入具体的中间件文件

修改index.js中的引入代码:

const cors = require('./middlewares/cors');
const bodyParser = require('./middlewares/bodyParser');

2. 修正中间件调用方式

你的cors.js和bodyParser.js导出的是接收app参数的函数,不是返回中间件的函数,因此不能用app.use(middlewares.cors())的写法,需要直接调用函数并传入app:

如果用方案1,index.js修改为:

const express = require('express');
const app = express();
const middlewares = require('./middlewares');
const configs = {
  database: require('./configs/database'),
  server: require('./configs/server')
};

// 调用中间件函数并传入app
middlewares.cors(app);
middlewares.bodyParser(app);

configs.database.setupDatabase();
configs.server.startServer(app);

如果用方案2,index.js修改为:

const express = require('express');
const app = express();
const cors = require('./middlewares/cors');
const bodyParser = require('./middlewares/bodyParser');
const configs = {
  database: require('./configs/database'),
  server: require('./configs/server')
};

cors(app);
bodyParser(app);

configs.database.setupDatabase();
configs.server.startServer(app);

3. 修复configs未引入的问题

原index.js中直接使用configs但未引入,需补充上述代码中的configs引入逻辑。

可选优化:调整中间件写法为返回中间件函数

如果希望保持app.use()的调用方式,可以修改cors.js和bodyParser.js,让它们返回中间件函数:

修改cors.js:

module.exports = () => {
  return (req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization');
    res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
    next();
  };
};

修改bodyParser.js:

const express = require('express');

module.exports = () => {
  return [
    express.json(),
    express.urlencoded({ extended: true })
  ];
};

此时index.js可保持原调用写法(需先解决middlewares模块引入问题):

app.use(middlewares.cors());
app.use(middlewares.bodyParser());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:24:50