Как обслуживать stati c файлы, используя express и e js, и отправлять данные? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь обслуживать файлы с express и отправлять данные в файл html с помощью e js. Проблема в том, что мне нужно только использовать express для обслуживания файлов или e js для отправки данных, но по какой-то причине я не могу использовать оба. Мои пути верны, но, вероятно, я должен сделать что-то другое, чтобы заставить обе работать. Мой код не достигает app.get, когда я использую app.use(express.static('../dist')), но когда я комментирую эту строку, он отправляет данные. Если бы я мог знать, что происходит, это было бы здорово.

Мой код следующий:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(express.static('../dist'));

app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set('views', __dirname, '../dist');

app.listen(4000, function() { console.log('listening')});

let views;

jwt.authorize((err, response) => {
    google.analytics('v3').data.ga.get(
        {
            auth: jwt,
            ids: 'ga:' + view_id,
            'start-date': '30daysAgo',
            'end-date': 'today',
            metrics: 'ga:sessions, ga:pageviews'
        },
        (err, result) => {
            console.log();
            views = result;
            console.log(views.data.rows[0][0]);

            app.get('/', function(req, res){
                console.log('test');
                res.render('../dist/index.html',{sessions:views.data.rows[0][0], pageviews:views.data.rows[0][1]});
            });
        }
    );
});

1 Ответ

1 голос
/ 05 февраля 2020

Если два маршрута соответствуют одному URL, тогда будет использоваться тот маршрут, который определен первым.

/ достигает маршрута stati c, находит совпадение (с файлом index.html) и обслуживает это до.

Код соответствия маршрута никогда не достигает того, что файлы app.get('/'.


E JS не являются файлами c. Не смешивайте их вместе с вашими файлами stati c.

Если в каталоге нет index.html, в котором хранятся ваши файлы stati c, он не будет совпадать с stati c route, поэтому код соответствия маршрута достигнет app.get('/'.

Вероятно, вам следует разделить файлы (на static и templates, а не объединять их вместе в dist) и сделать он определяет, какие файлы являются шаблонами E JS, давая им .ejs расширения файлов вместо .html.

...