Javascript nodejs快速路由器再处理请求

Javascript nodejs快速路由器再处理请求,javascript,node.js,express,router,nodemailer,Javascript,Node.js,Express,Router,Nodemailer,我的快速路由器正在处理一个请求两次,我不知道为什么,导致发送电子邮件两次 我将显示我的前端代码和后端代码 前台:没关系,它只发送一次请求 async cargarZip() { let formData = new FormData(); let zipFile = document.querySelector("#archivoZip"); formData.append("archivoZip", zipFile.files[0]);

我的快速路由器正在处理一个请求两次,我不知道为什么,导致发送电子邮件两次 我将显示我的前端代码和后端代码

前台:没关系,它只发送一次请求

async cargarZip() {
  let formData = new FormData();
  let zipFile = document.querySelector("#archivoZip");
  formData.append("archivoZip", zipFile.files[0]);
  await axios.post(
    CONSTANTES.URL_RUTA_SERVICIOS + "cargas/cargar-zip", 
    formData,
    {headers: {
        Authorization: `Bearer ${localStorage.token}`,
        "Content-Type": "multipart/form-data",
      },
     })
     .then(function (response) {
       // actions
     })
     .catch(function () {});
}
返回:由于某种原因,路由器重新处理请求

    cargasResultadosRouter.post('/cargar-zip', mdAutenticacion.verificaToken,
        async function (req, res) {
    res.header("Content-Type", "application/json; charset=utf-8");

    moment.locale('es')
    let fecha = moment().format("L").split("/").join("-")
    let hora = moment().format('LTS')

    let file = req.files.archivoZip

    let fileName = file.name.replace(/ /, '_')
    console.log(fecha, hora, "cargas/cargar-zip", "Llegó:", fileName);

    let dir = './resultadosParaEnviar';

    if (!fs.existsSync(dir)) {
        fs.mkdirSync(dir);
        console.log(dir, "Creado");
    }

    let ruta = "/opt/app/ServiciosCliexCovid/OM_ServicioCliexCovid/public/resultadosParaEnviar/"

    let rutaArchivoZip = ruta + fecha + " " + fileName
    file.mv(rutaArchivoZip, async function (err) {
        if (err) {
            return res.status(500);
        } else {
            let rutaArchivoFolder = ruta + fecha + "_" + fileName.split(".")[0];
            if (!fs.existsSync(rutaArchivoFolder)) {
                fs.mkdirSync(rutaArchivoFolder);
                console.log(rutaArchivoFolder, "Creado");
            }
            await decompress(rutaArchivoZip, rutaArchivoFolder).then(async files => {
                await esperarTiempo(100)
                console.log(fileName, 'Extraido');
                let emails = []
                for (const [index, file] of files.entries()) {
                    await esperarTiempo(100)
                    let codigo = file.path.match(/(\d+)/);
                    console.log(index, "Archivo Encontrado:", codigo, "de", files.length);
                    if (codigo) {
                        let archivos = []
                        archivos.push({
                            filename: file.path,
                            path: rutaArchivoFolder + '/' + file.path
                        })
                        // Get email
                        let correo = await BD.CargarResultadosDao.CorreoPruebaMolecular(codigo[0])

                        emails.push({
                            correo: correo,
                            archivos: archivos
                        })
                        // Sends email
                        if (correo !== '') {
                            await enviarCorreoConPruebaMolecular(correo, archivos)
                            await esperarTiempo(1500)
                        }

                    } else {
                        console.log("NO ENCONTRO:", file.path);
                    }
                }
                res.json(emails);
            });                
      }
    })
})

function esperarTiempo(tiempo) {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve("resolved");
        }, tiempo);
    });
}
日志说: 2020年9月24日15:33:44卡加斯/卡加尔邮政编码:OMNIA_MEDICA 10-09.zip 发件人: log(fecha,hora,“cargas/cargar-zip”,“Llegó:”,文件名)

2分钟后说: 24-09-2020 15:35:58 cargas/cargar zip Llegó:OMNIA_MEDICA 10-09.zip 发件人: log(fecha,hora,“cargas/cargar-zip”,“Llegó:”,文件名)

无需从前端重新发送


我前面用的是Vue,服务器在nginx上

前面有什么负载平衡器吗?如果响应时间过长,负载平衡器可能会重新发送请求,因为它在一段时间后没有收到响应。2分钟的延迟让我觉得是因为回复时间太长或者没有收到?是的,已经收到了。我认为这可能是问题所在。我真的不知道负载均衡器的功能,但是你认为我应该配置响应时间吗?你知道它在哪里吗?谢谢如果您的回复需要2分钟,那么对我来说,这是您应该解决的API设计问题。回电话不应该花那么长时间;它们应该是异步的,这样你可以立即返回,然后如果请求完成,调用方可以轮询状态(或者得到通知)。你好,Joe,我认为响应过程大约需要4分钟,我知道这是正常的。如果我错了,请纠正我。我知道领航员可以正常等待