首页 > 解决方案 > 如何在其他文件中设置 express 中间件?

问题描述

我在 server.js 中有这个快速配置:

  const app = express();
  app.use(express.json());
  app.use(express.urlencoded({ extended: true }));
  app.use(crossOriginRequest());
  app.use(setSecurityHttpHeaders());
  app.use(preventMongoOperatorInjection());
  app.use(preventXssAttacks());
  app.listen(80);

如何将所有这些中间件设置在另一个文件中?例子:

  const app = express();
  setBasicMiddlewares(app);
  app.listen(80);

在 setBasicMiddlewares.js 中(这是我想要的一个例子,我不相信它有效):

function setBasicMiddlewares(app) {
  app.use(express.json());
  app.use(express.urlencoded({ extended: true }));
  app.use(crossOriginRequest());
  app.use(setSecurityHttpHeaders());
  app.use(preventMongoOperatorInjection());
  app.use(preventXssAttacks());
}

export default setBasicMiddlewares;

我正在使用带有“import”和“export default”的节点模块

由于 ES6 模块,这个问题与另一个问题不相似。另一个问题是询问路线。

标签: javascriptnode.jsrestexpressnode-modules

解决方案


您可以将express()实例的创建分离到另一个文件/模块中并将其导出。

应用程序.js

// import dependencies of course

const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(crossOriginRequest());
app.use(setSecurityHttpHeaders());
app.use(preventMongoOperatorInjection());
app.use(preventXssAttacks());

module.exports = app;

然后,在您的 server.js 中,导入app并设置您的服务器。

服务器.js

var app = require('../app');
var http = require('http');
var server = http.createServer(app);
server.listen(process.env.PORT || '3000');

这也是您使用express-generator获得的默认应用程序结构,我强烈推荐给您。


推荐阅读