【问题标题】:How to edit an existing server that I created with node.js without creating a new server如何在不创建新服务器的情况下编辑我使用 node.js 创建的现有服务器
【发布时间】:2021-01-06 22:38:53
【问题描述】:

我在 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 而不是创建服务器,还是我必须做其他事情?
请帮助

【问题讨论】:

  • 不是createServer,是server.listen 双重调用导致问题。所以端点已经打开。提供更多细节,不清楚你想要达到什么目的。

标签: javascript node.js json fetch puppeteer


【解决方案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");

【讨论】:

    最近更新 更多