在Express中间件内部的调用链中,app.param方法总是在app.use之前调用?Node.js Express中间件:app.param vs app.use
2
A
回答
4
我用此程序进行了测试,改变了app.use
与app.param
的顺序,使用表达式4.10.2。该参数总是首先运行,这是有道理的,因为路由处理程序期望能够执行req.params.foo
并且为了使param处理程序需要运行它。
var express = require('express');
var app = express();
app.use("/:file", function (req, res) {
console.log("@bug route", req.params.file);
res.send();
});
app.param("file", function (req, res, next, val) {
console.log("@bug param", val);
next();
});
app.listen(3003);
运行这一点,并curl localhost:3003/foo
测试,你会得到输出:
@bug param foo
@bug route foo
2
您可以通过日志记录对其进行测试,但我确信在4.0版本中,所有内容都是在您设置应用程序时声明的顺序调用的。
+1
这个答案从另一个答案不同。你所说的是合理的,但它看起来像app.params总是第一次在Express 4 – 2014-11-21 04:36:36
+0
好知道;文档说'使用'语句是有序的,并且在路由器上设置.param(然后'使用'),这不是直观的。 – Paul 2014-11-21 14:50:42
相关问题
- 1. Node.js Express vs. Flatiron
- 2. 如何在Express中设置路线? app.use()vs app.get()
- 3. 导致问题的CSRF中间件Node.JS + Express
- 4. Node.js - express - session
- 5. Node.js Express中间件功能没有下一个
- 6. Node.js/Express缓存
- 7. Express.js“app.use()需要中间件功能”
- 8. Node.js + Express缓存
- 9. express.js中app.use和app.get之间的区别
- 10. NodeJS/Express app.use序列和用法
- 11. Express JS Error hrow new TypeError('app.use()require middleware functions');
- 12. 如何关闭app.use(express.static('/ public')); Express js
- 13. routing node.js和express
- 14. Node.js Express unhandledRejection removeListener
- 15. 了解Express中的vhost Node.js
- 16. layout.ejs没有呈现 - Node.js,Express
- 17. 快速app.use刷新行为
- 18. node.js + express + socket.io与ipv6?
- 19. Node.js/Express/Jade POST表单404s
- 20. Swagger,Express和Node.js中的“无法获取/”
- 21. Node.js&Express会话问题
- 22. 在node.js中使用express来路由文件夹
- 23. 文件上传node.js express
- 24. Express 4.x中使用的Express-session中间件的配置问题
- 25. 快递/ node.js的app.use使得客户端滞后了
- 26. Node.js,Express和Jade - 表格
- 27. Node.js/Express异步函数
- 28. 在Express Node.js中禁用etag头文件
- 29. 在Express,EJS和Node.js之间导航
- 30. node.js express set title
控制台日志记录是异步的,所以为了完整性,在按时间排序时将时间戳记(Date.now()或process.hrtime())添加到console.log文件中会得到相同的结果。 – zamnuts 2014-11-21 04:44:09
这并非完全正确。它是一个单一的流,输出保证以与传递给console.log()相同的顺序显示在控制台上。如果stdout的顺序不能保证,那么所有的混乱将随之而来,并且你不能可靠地将数据写入标准输出。上述情况良好,不存在误导标准输出的可能性。 – 2014-11-21 04:46:30
哦,我的坏,我卡在分叉的孩子“模式”,其中写入控制台时不保证来自不同子进程的命令。 – zamnuts 2014-11-21 04:54:18