Выражение node.js не возвращает страницу по умолчанию - PullRequest
0 голосов
/ 30 октября 2018

В этом коде

var history = require('connect-history-api-fallback');
var express = require('express');
var path = require('path');
var app = express();

app.use(history({
    index: 'Trading Inquiry/index.html'
}));
app.use(express.static(path.join(__dirname, 'Trading Inquiry')));
app.get('/', function (req, res) {
    console.log(1);
    res.sendFile('Trading Inquiry/index.html');
});

var server = app.listen(process.env.PORT || 3000, function () {
    var host = server.address().address;
    var port = server.address().port;

    console.log('My site started at http://%s:%s', host, port);
});

Я настроил так, чтобы ссылки относились к папке Trading Inquiry. Кроме того, задан маршрут /, верните файл index.html, а для маршрутов, которые не совпадают, затем также верните файл index.html. Однако, когда я посещаю http://localhost:3000,, я получаю

Cannot GET /

Это работает, хотя

http://localhost:3000/index.html

Кто-нибудь знает, что не так?

Спасибо

1 Ответ

0 голосов
/ 30 октября 2018

res.sendFile не использует экспресс-публичный путь, поэтому вы должны указать абсолютный путь к файлу при отправке.

res.sendFile(path.join(__dirname, 'Trading Inquiry', 'index.html'));

Другое решение (которое я предпочитаю) ,

Если вы укажете '/' в качестве первого аргумента для статического промежуточного программного обеспечения Express, будет отображено имя файла index.html.

Так что, если вы измените ниже строки:

app.use('/', express.static(path.join(__dirname, 'Trading Inquiry')));

Вам не понадобится маршрут получения для index.html, поэтому приведенный ниже код не требуется.

app.get('/', function (req, res) {
    console.log(1);
    res.sendFile('Trading Inquiry/index.html');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...