最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Node JS + Express:错误对象没有捕获到Promise拒绝

IT培训 admin 9浏览 0评论

Node JS + Express:错误对象没有捕获到Promise拒绝

在我的Express Web应用程序中,我定义了一个返回Promise对象的函数。

login: function(un, pass) {
        result = {};
        var loginOk = new Promise(
            function (resolve, reject) {
                if (result.hasOwnProperty('sessionToken')) {
                    var user = {username: result["username"], sessionToken: result["sessionToken"]};
                    resolve(user); // fulfilled
                } else {
                    var reason = new Error('login failed');
                    console.log("LOGIN FAILED:" + reason.message);
                    reject(reason); // reject
                }

            }
        );
        return loginOk;
}

在调用登录功能的路由中:

router.get('/login', function(req, res, next) {
    const unm = req.query.username;
    const pwd = req.query.password;

    db_user.login(unm, pwd)
    .then(function(result) {
        console.log("/login:" + JSON.stringify(result));
        res.send(result);
    }).catch(function (error) {
        // Login failed
        console.log(error);  // This printed out {"Error":{}}
        console.log(error.message); // This printed out undefined. but supposed to be "login failed"!!!
        res.send(error.message);
    });
});

我想将拒绝回调函数生成的错误消息返回给用户前端视图。问题是错误始终为空并且error.message未定义。捕获似乎没有从拒绝中传递错误。

回答如下:

在Express Js中,不支持异步功能。 qazxsw poi。

您应该使用像.catch(err=>{....somecode})这样的中间件或使用express-promise-router来捕获错误。

Node JS + Express:错误对象没有捕获到Promise拒绝

在我的Express Web应用程序中,我定义了一个返回Promise对象的函数。

login: function(un, pass) {
        result = {};
        var loginOk = new Promise(
            function (resolve, reject) {
                if (result.hasOwnProperty('sessionToken')) {
                    var user = {username: result["username"], sessionToken: result["sessionToken"]};
                    resolve(user); // fulfilled
                } else {
                    var reason = new Error('login failed');
                    console.log("LOGIN FAILED:" + reason.message);
                    reject(reason); // reject
                }

            }
        );
        return loginOk;
}

在调用登录功能的路由中:

router.get('/login', function(req, res, next) {
    const unm = req.query.username;
    const pwd = req.query.password;

    db_user.login(unm, pwd)
    .then(function(result) {
        console.log("/login:" + JSON.stringify(result));
        res.send(result);
    }).catch(function (error) {
        // Login failed
        console.log(error);  // This printed out {"Error":{}}
        console.log(error.message); // This printed out undefined. but supposed to be "login failed"!!!
        res.send(error.message);
    });
});

我想将拒绝回调函数生成的错误消息返回给用户前端视图。问题是错误始终为空并且error.message未定义。捕获似乎没有从拒绝中传递错误。

回答如下:

在Express Js中,不支持异步功能。 qazxsw poi。

您应该使用像.catch(err=>{....somecode})这样的中间件或使用express-promise-router来捕获错误。

发布评论

评论列表 (0)

  1. 暂无评论