我在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');
});发布于 2014-06-15 23:41:26
在“让它工作”方面,下面的代码将对404执行此操作。
我没有回答任何关于其他反应代码的问题,把这个留给你。:)
让它开始工作
我所做的改变的总结:
'http'和var server = http.createServer(app);的依赖,因为它们并不是真正需要的app.listen移动到它所监听的end...so,在所有快速配置完成之后。.sendfile()方法而不是.redirect(),因为我们只是在发送状态信息这对我的系统有效。如果您对代码有疑问或有问题,请留下评论,我会帮助您,因为我是able...but,我不能保证在评论中出现奇迹。:)
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的同时使用express v.4.x应用程序,但是代码中的一些内容看起来像是来自v.3.x应用程序/示例/教程。当我开始的时候,同样的事情正在发生,就像快递从v.2.x转移到v.3.x...so一样。我感觉到你的痛苦。
https://stackoverflow.com/questions/24233560
复制相似问题