Как отредактировать существующий сервер, который я создал с помощью node.js, не создавая новый сервер

У меня есть функция в node.js, которая берет данные с помощью puppeteer и выводит их в файл json. Данные, которые я принимаю, меняются, поэтому мне нужно, чтобы моя функция время от времени сбрасывалась, и я делаю это с помощью setInterval. Внутри моей функции у меня есть

    var server = http.createServer((req, res) => {
      if (req.url === "/"){
        res.writeHead(200, {"Content-Type": "application/json", "Access-Control-Allow-Origin": "http://localhost:3000"})
        res.end(JSON.stringify(dataExplained))
      }
    })
    server.listen(8080, "127.0.0.1")

(dataExplained — это объект, в котором я храню данные).
Когда он запускается во второй раз в setInterval, он выводит эту ошибку:
Ошибка: слушайте EADDRINUSE: адрес уже используется 127.0.0.1:8080
Я понимаю, почему я получаю эту ошибку, потому что я создаю и слушаю сервер на существующем порту, но я не знаю, как это остановить.
Существует ли editServer вместо создания сервера или я нужно сделать что-то еще?
Помогите, пожалуйста


person Tamir Polyakov    schedule 06.01.2021    source источник
comment
Это не createServer, это server.listen двойной вызов вызывает проблему. Итак, конечная точка уже открыта. Напишите подробнее, не понятно чего вы хотите добиться.   -  person 4xy    schedule 07.01.2021


Ответы (1)


Определите dataExplained вне вашей функции обновления.

Обновите dataExplained из вашей функции обновления.

Запустите свой сервер один раз, когда запустится скрипт. Не пытайтесь создавать новый сервер каждый раз при изменении значения dataExplained.

let dataExplained = { example: 1 };

const update => () => {
    dataExplained = { example: dataExplained.example + 1 };
}

setInterval(update, 2000);

const server = http.createServer( ... );
server.listen(8080, "127.0.0.1");
person Quentin    schedule 06.01.2021