【问题标题】:NodeJS API response fails after fs.writefilefs.writefile 后 NodeJS API 响应失败
【发布时间】:2021-07-03 01:48:53
【问题描述】:

我创建了一个 API,我想创建一个文件,在文件写入后,请求一个日志 API,在其响应后,相对于用户响应。

我已将代码简化如下:

const express = require('express');
const router = express.Router();
const fetch = require("node-fetch");
const util = require('util');
const fs = require("fs-extra")

router.get('/works/', (req, res) => {
    logData(res)
})

router.get('/fails/', (req, res) => {
    let t = Date.now();
    const writeFile = util.promisify(fs.writeFile)
    writeFile(`./data/${t}.json`, 'test').then(function(){
        logData(res)
    })
})

function logData(res) {
    return new Promise(resolve => {
        fetch('https://webhook.site/44dad1a5-47f6-467b-9088-346e7222d7be')
            .then(response => response.text())
            .then(x => res.send('x'));
    });
}

module.exports = router

/works/ API 工作正常,

但 /fails/ API 失败并出现 Error: read ECONNRESET

【问题讨论】:

  • 这能回答你的问题吗? How do I debug error ECONNRESET in Node.js?
  • @nbokmans 不,这没用,我认为 Promise 链接可能有问题
  • @SalmanSharati 您是否需要带有 promise 的正确 fs 模块?请说明您是如何导入fs 模块的。服务器端是否显示任何错误?
  • 你如何运行你的代码?如果您使用的是nodemon,它将在您更改此项目中的.json 文件后重新启动服务器。确保您的服务器没有重新启动。
  • writeFile from fs-extra 已经支持承诺。你不需要promisify它。服务器端有控制台输出吗?如果是,请添加。

标签: javascript node.js api promise fs


【解决方案1】:

OP 在 cmets 中澄清他使用 nodemon 运行此代码。

问题是nodemon 也监视.json 文件并重新启动服务器。因此,更改 JSON 文件的请求失败并显示 Error: read ECONNRESET

要防止nodemon 在您更改.json 文件时重新启动服务器,请参阅this
例如可以添加nodemon.jsonconfiguration file忽略./data目录(添加此文件后一定要重启nodemon):

{
    "ignore": ["./data"]
}

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 2019-02-04
    • 2021-12-12
    • 2018-05-02
    • 1970-01-01
    • 2013-11-28
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多