Я пытаюсь устранить проблему в моем очень простом шаблоне экспресс-бэкенда.У меня есть универсальное промежуточное ПО, которое я хочу запускать при каждом запросе, который попадает на сервер (по сути, я просто пытаюсь установить cookie).
const express = require('express');
const path = require('path');
const uuidv4 = require('uuid/v4');
const cookieParser = require('cookie-parser')
const app = express();
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'client/build')));
app.use('/', (req, res, next) => {
console.log(req.cookies)
if (!req.cookies['audience_tracking_id']) {
console.log('Processed Request - User Does Not Have Cookie.')
const uniqueID = uuidv4();
res.setHeader('Set-Cookie', [`audience_tracking_id=${uniqueID}`, `contentFocus=${randomProductName()}`]);
}
next();
});
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname + '/client/build/index.html'))
});
app.use(function(err, req, res, next) {
console.log(err)
res.status(err.status || 500).send();
});
const port = process.env.PORT || 6000;
app.listen(port);
console.log(`Audience Service Host listening on ${port}`);
Приложение включает в себя React Front-End, которыйразмещен на Heroku, и я передаю файлы статической сборки через Express в том же контейнере.
Вопрос в том, использую ли я Postman для локальной отправки запроса GET на этот файл в localhost: 6000, ИЛИЯ получаю доступ к контейнеру в Heroku, console.log()
не запускается - и, возможно, к остальному промежуточному программному обеспечению.
Однако, если я переместу эту строку ниже промежуточного программного обеспечения cookie:
app.use(express.static(path.join(__dirname, 'client/build')));
ИЛИ, если я просто закомментирую это, мое промежуточное программное обеспечение сработает, и появится console.log ().Это было простое исправление, но я понятия не имею, почему это происходит на самом деле. Кто-нибудь знает, что я делаю не так с этим кодом, который заставляет промежуточное ПО работать как есть?