Javascript 如何在Express.js中处理ETIMEDOUT

Javascript 如何在Express.js中处理ETIMEDOUT,javascript,node.js,express,Javascript,Node.js,Express,我开发了一个Node.js/Express.js应用程序,可以与FTP服务器交互,问题是如果服务器脱机,应用程序就会崩溃,因为我找不到处理ETIMEDOUT异常的方法。顺便说一下,我用于FTP的模块是jsftp 发生这种情况的代码部分如下所示: router.post("/", upload, function(req, res, next) { try { ftp.auth(ftp.user, ftp.pass, function(error) {

我开发了一个Node.js/Express.js应用程序,可以与FTP服务器交互,问题是如果服务器脱机,应用程序就会崩溃,因为我找不到处理ETIMEDOUT异常的方法。顺便说一下,我用于FTP的模块是jsftp

发生这种情况的代码部分如下所示:

router.post("/", upload, function(req, res, next) {
    try {
        ftp.auth(ftp.user, ftp.pass, function(error) {
            if(error) {
                res.status("500");
                res.end("Error: Couldn't authenticate into the FTP server.");
                console.log(error);
            } else {    // Authenticated successfully into the FTP server
                /* some code here */
            }
        });
    } catch(error) {    // Probably timeout error
        res.status("500");
        res.end("Internal Server Error");
        console.log(error);
    }
});
我尝试将
.on('error',function(e){/*my code here*/}
附加到router.post函数,但随后我得到
TypeError:router.post(…)。on不是一个函数

有人有什么建议吗?我很感激。

您的问题与

步骤是处理错误并重试

http.Client.on('error', function (err) { 
    /* handle errors here */ 
    if (err.message.code === 'ETIMEDOUT') { 
        /* apply logic to retry */ }
})

用于保持重试逻辑的简单性。

我发现了如何处理jsftp连接中的异常,这与建议的非常相似,但您必须使用您的连接实例

这就是成功的原因:

let conn = new jsftp(ftp);

conn.on("error", function(error) {  // If an exception was thrown throughout the FTP connection
    // Handle the error in here
});

尝试这样做会给我“TypeError:express.on不是一个函数”,即使在我的代码中使用“const express=require(“express”);”正确导入了express。对不起,它是http.Client的一部分,您可以这样做。
express
是一个输入错误