У меня есть простой сервер Express, который обслуживает некоторые статические файлы. Вот сервер:
var express = require('express');
var app = express.createServer();
// Configuration
app.configure(function() {
app.use(express.bodyParser());
app.use(express.staticCache());
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
// 404
app.get('*', function(req, res) {
res.send('not found', 404);
});
app.listen(3000);
В моем публичном каталоге у меня есть файл с именем index.html
. При запуске node app.js
и последующем просмотре localhost:3000/index.html
статический файл отображается ожидаемым образом. Переход к localhost:3000/ind
или localhost:3000/ind\
показывает страницу 404
, как и ожидалось.
Однако переход к localhost:3000/index.html\
(обратите внимание на обратную косую черту) приводит к сбою моего node
сервера с:
stream.js:105
throw er; // Unhandled stream error in pipe.
^
Error: ENOENT, no such file or directory '/home/bill/projects/app/public/index.html\'
Почему сервер node
падает, а не просто обслуживает страницу 404
? Я подумал, что поскольку файл не существует, статическое промежуточное ПО просто пропустит его и передаст запрос на маршруты. Я справился с этим, создав специальное промежуточное программное обеспечение, которое возвращает 404
, если в URL-адресе запроса существует завершающая обратная косая черта, но я хотел бы выяснить, не упустил ли я что-то здесь. Спасибо!