我遇到一个问题,例如,我的404渲染会捕获错误的文件请求,css或图像。我真的想要返回404响应,但在这种情况下不会呈现404页面。在过去,我使用nginx处理文件请求,所以这不是问题。但是当express处理文件服务时,正确的方法是什么?
这是我当前的路由处理,后跟错误处理逻辑 -
app.use(express.static(path.join(rootPath, 'public')));
app.use('/', routes);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
// respond with html page
if (req.accepts('html')) {
res.render('404', { url: req.url });
return;
}
// respond with json
if (req.accepts('json')) {
res.send({ error: 'Not found' });
return;
}
// default to plain-text. send()
res.type('txt').send('Not found');
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message + " " + req.path,
error: err
});
});
}
答案 0 :(得分:0)
您可以使用Express服务静态中间件:https://expressjs.com/en/resources/middleware/serve-static.html