javascript - 如何在其他文件中设置 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 模块,这个问题与另一个问题不相似。另一个问题是询问路线。
解决方案
您可以将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获得的默认应用程序结构,我强烈推荐给您。
推荐阅读
- azure - MSFT Azure 管道能否连接到 Bitbucket 作为源代码控制系统,然后构建构建工件并将其部署到本地服务器?
- javascript - JSF 没有正确调用 jQuery 函数
- java - 如何在 Android Studio Camera2 中获取设备相机分辨率
- python - 使用 Virtualenv 命名为 Flask 的错误模块
- html - HTML 5 视频标签未显示全屏按钮
- scala - 给定关键字在 Scala 3 或 dotty 中如何工作?
- github - Github Actions:当分叉的 repo 发生 pr 时,向基础 repo 创建一个拉取请求
- python - 多线程的用户提示
- java - 为什么 Hibernate 在 Spring 事务中说“无会话”?
- excel - 当成员是 Cubset 函数时,Cubevalue 返回空白(零长度字符串)