Экспресс-клиент nodejs Невозможно получить /xxx.html перед доступом к основному - PullRequest
0 голосов
/ 11 июня 2019

У меня есть следующий код на стороне сервера:

var app = express();
app.get('/', function (req, res) {
    res.redirect('/main');
});
app.get('/main', function (req, res) {
    var d = new Date();
    res.sendFile(path.join(__dirname + '/main.html'));
    Info(req.ip + ' - Session to main.html built successfully! ');
    app.use(express.static(__dirname));
});

В этом же каталоге есть и другие html-файлы, например, xxx.html.Я обнаружил следующее поведение, которое сбивает с толку, если я создаю новый сеанс, пытаюсь получить доступ к localhost: 7778 / xxx.html, клиент не может получить: Cannot GET /xxx.html:

Failed to load resource: the server responded with a status of 404 (Not Found)

С другой стороныhand, после доступа к localhost: 7778 /, а затем попытаться получить доступ к localhost: 7778 / xxx.html, будет успешным.

Может кто-нибудь объяснить поведение?Могу ли я установить локальный / xxx.html прямой доступ?

Большое спасибо!

1 Ответ

1 голос
/ 11 июня 2019

Вам необходимо переместить app.use(express.static(__dirname)); за пределы обработчика app.get('/main', ...):

var app = express();
app.get('/', function (req, res) {
    res.redirect('/main');
});
app.get('/main', function (req, res) {
    var d = new Date();
    res.sendFile(path.join(__dirname + '/main.html'));
    Info(req.ip + ' - Session to main.html built successfully! ');
});
app.use(express.static(__dirname));

Согласно документу Express :

app.use ([path,] callback [, callback ...])

Монтирует указанную функцию промежуточного программного обеспечения или функции по указанному пути

Указанное промежуточное программное обеспечение (express.static) должен быть объявлен как сам по себе и выполняться после запуска сервера.Он не должен выполняться как часть логики в обработчике GET /main.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...