我正在使用Morgan和Express.js,我认为我的中间件有问题,因为Morgan只记录请求返回错误302(重定向),这是在我的中间件捕获错误并重定向到其错误页面时发生的
我对Express.js来说是一个全新的中间件爵士乐,所以我非常感谢任何帮助。谢谢!
var http = require('http')
, express = require('express')
, app = express()
, logger = require('morgan');
app.use(express.static(__dirname + '/public'));
app.use(logger());
var server = http.createServer(app);
server.listen(8888);
// Handle 404
app.use(function(req, res) {
res.status(404).redirect('/error/404.html');
});
// Handle 500
app.use(function(error, req, res, next) {
res.status(500).redirect('/error/500.html');
});
答案 0 :(得分:5)
就“让它工作”而言,下面的代码将为404执行此操作。
我没有回答有关其他回复代码的任何问题,请将此留给您。 :)
开始工作
我改变的摘要:
'http'
和var server = http.createServer(app);
的依赖,因为那些并不是真的需要app.listen
移到了最后...所以它在所有快速配置完成后进行监听。.sendfile()
方法代替.redirect()
,因为我们只是发送状态内容这适用于我的系统。如果您对代码或问题有疑问,请发表评论,我会尽力帮助......但我不能在评论中承诺奇迹。 :)
var express = require('express');
var app = express();
var logger = require('morgan');
// edited, moving `app.use(logger());` first so it can log everything...
app.use(logger());
app.use(express.static(__dirname + '/public'));
// Handle 404
app.use(function(req, res, next) {
res.status(404).sendfile('./error/404.html');
});
app.listen(8888);
快速搁置:
我的猜测是你的代码中的一些问题是基于这样的事实,即许多表达教程/指南都是针对v.3.x编写的,但v.4.x中的更改足够大,以至于它不是超级的 - 很容易弄清楚什么可能仍然有用,什么不可用。
例如,您只使用morgan
使用快速v.4.x应用,但代码中的一些内容看起来像来自v.3.x应用/示例/教程。当我开始时,同样的事情正在发生,因为快递从v.2.x转移到v.3.x ...所以是的。我感觉到你的痛苦。