Используя Express.js, как я могу отправить файл по любому запросу? - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь отправить index.html по любому запросу.

Код:

import express from 'express';
import path from 'path';

const app = express();

app.use(express.static(path.join(__dirname, '..', 'dist')));

app.get('*', function (req, res) {
  res.sendFile(path.join(__dirname, '..', 'dist', 'index.html'));
  res.end();
});

app.listen(8000, () => console.log('Server started on port 8000'));

enter image description here enter image description here

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

измените

app.use(express.static(path.join(__dirname, '..', 'dist')));

app.get('*', function (req, res) {
  res.sendFile(path.join(__dirname, '..', 'dist', 'index.html'));
  res.end();
});

на

app.use(express.static(path.join(__dirname, '..', 'dist')));

app.get('*', function (req, res) {
    res.sendFile('index.html', {root: path.join(__dirname, '..', 'dist')});
    res.end();
});
0 голосов
/ 29 декабря 2018

Хорошая техника, которую вы можете использовать здесь, это хранить html-страницу в оперативной памяти, чтобы вашей системе не приходилось читать файл каждый раз, когда делается запрос.Я предлагаю вам использовать библиотеку fs.Попробуйте следующее.

import express from 'express';
const fs = require('fs')

const app = express();

var indexPage = fs.readFileSync(__dirname + '/PATH_TO/index.html', 'utf8')

app.get('*', function (req, res) {
   return res.send(indexPage)
})

app.listen(8000, () => console.log('Server started on port 8000'));

С вашим текущим решением вы пытаетесь прочитать файл для каждого запроса.Делая это, вы сэкономите много ресурсов процессора и получите гораздо более быстрый результат.

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