【问题标题】:How do I set middlewares on express in other file?如何在其他文件中设置 express 中间件?
【发布时间】:2020-12-22 16:06:52
【问题描述】:

我在 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 模块,这个问题与另一个问题不同。另一个问题是询问路线。

【问题讨论】:

  • 考虑使用export default -> stackoverflow.com/questions/40294870/…
  • 嗨,爸爸游戏!我阅读了您发送的问题,但我的环境使用节点 v14.8,因此它确实读取了 ES6。我错误地认为我应该使用“导出默认值”(也许我不明白)?您发送的问题是 4 年前写的。
  • FaltFe,这并不能回答我的问题,因为它不是用 ES6 编写的,它确实指的是不同类型的中间件
  • app.listen 两次根本行不通,你应该有一个入口点(index.js、server.js 等),然后导入/要求 routes 使用它们如果需要,自己的包等。

标签: javascript node.js rest express node-modules


【解决方案1】:

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

app.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 并设置您的服务器。

server.js

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多