Обслуживание сборки VueJS через Express.js - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу подать vue js dist/ через экспресс js.Я использую исторический маршрутизатор в приложении vue js.

Ниже приведены вызовы API

  1. api /
  2. s-файл / отправка /: id
  3. term / get /: which

Как я выяснил решение в python здесь .Я не знаю, как это сделать в узле js с express

Код, который я сейчас использую:

app.use(function (req, res, next) {
    if (/api/.test(req.url))
        next();
    else {
        var file = "";
        if (req.url.endsWith(".js")) {
            file = path.resolve(path.join(distPath, req.url))
            res.header("Content-Type", "application/javascript; charset=utf-8");
            res.status(200);
            res.send(fs.readFileSync(file).toString());
        } else if (req.url.endsWith(".css")) {
            file = path.resolve(path.join(distPath, req.url))
            res.header("Content-Type", "text/css; charset=utf-8");
            res.status(200);
            res.send(fs.readFileSync(file).toString());

        } else {
            file = path.resolve(path.join(distPath, "index.html"))
            res.header("Content-Type", "text/html; charset=utf-8");
            res.status(200);
            res.send(fs.readFileSync(file).toString());
        }

    }
})

1 Ответ

0 голосов
/ 14 сентября 2018

Оригинальный ответ

Вы можете использовать express.static () для обслуживания всех файлов в каталоге.Ваши маршруты API должны обрабатываться отдельно.

Пример:

var express = require('express');
var app = express();

// Serve all the files in '/dist' directory
app.use(express.static('dist'));

// Handle a get request to an api route
app.get('/your-api-route/:id', function (req, res) {

  // You can retrieve the :id parameter via 'req.params.id'
  res.send(`Did GET /your-api-route/${req.params.id}!`);
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

Обновление 1: Добавлен пример

Обновление 2: Изменен пример правильного использования (https://github.com/bripkens/connect-history-api-fallback/tree/master/examples/static-files-and-index-rewrite)

Я пропустил часть истории, мой плохой. Посмотрите на connect-history-api-fallback , чтоупоминается в vue docs . Это должно решить ваши проблемы?

Обновленный пример

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

// Middleware for serving '/dist' directory
const staticFileMiddleware = express.static('dist');

// 1st call for unredirected requests 
app.use(staticFileMiddleware);

// Support history api 
app.use(history({
  index: '/dist/index.html'
}));

// 2nd call for redirected requests
app.use(staticFileMiddleware);

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...