как исправить проблему с console.log в экспрессе - PullRequest
0 голосов
/ 27 декабря 2018

мой экспресс-сервер прекратил выполнение console.log при обработке запросов

При таких проблемах обычно рекомендуется app.use (express.static (srPath)) объявить перед маршрутизацией, эта рекомендация соблюдается.У меня проблема со статикой, когда я комментирую эту строку, логирование начинает работать.Я понятия не имею, почему это происходит Экспресс-версия: «^ 4.16.4» используется все время репо: https://gitlab.com/igor_borisch/react-redux-node-app

var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var axios = require ('axios');
var app = express();
var srcPath = path.join(__dirname, './public');


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


app.get('/', (req, res) => {
    console.log(srcPath);
    res.sendFile('./index.html', {root: srcPath});
});


app.get('/get-currencies', (req,res) => {
    axios.get('https://api.exchangeratesapi.io/latest?base=RUB')
        .then(function (response) {
            console.log(response.data);
            res.send(JSON.stringify(response.data));
        });
});

app.listen(3001, () => console.log('app listen on port 3001'));

1 Ответ

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

Я решил проблему следующим образом: экспресс поддерживает промежуточные обработчики, промежуточный обработчик в параметрах функции обратного вызова имеет 3 pfrfmeters: req, res, next.Вам не нужно определять next, как я понимаю, express автоматически найдет следующий обработчик маршрута, который вы используете, и выполните его.очень важно поставить первый промежуточный обработчик.я пытаюсь написать что-то вроде:

app.use('/',(req,res,next) => {express.static(srcPath)}) 

но это не работает, возможно, потому что метод express.static является оберткой внешнего модуля serve-static

мой пример ниже работает правильно

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var path = require('path');
var axios = require ('axios');
var app = express();
var srcPath = path.join(__dirname, '../public');


app.get('/',(req,res,next) => { //here just add next parameter
    console.log('login');
    next();
})

app.use('/',express.static(srcPath));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.get('/get-currencies', (req,res) => {
    console.log('alo')
     axios.get('http://yandex.ru/')
        .then(function (response) {
            console.log('recieve response');
            res.send(response.data);
        })
        .catch((error) => {
            res.send(error);
        });
    }
);


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