Express.js中异步路由中的错误处理

时间:2018-04-25 03:25:55

标签: node.js express async-await axios

我在下面有快递路线并且有效。 Hovewer,如果axios因错误而无法检索任何信息,我无法用res.send回复,但我可以在终端看到错误日志。我怎样才能发现错误?理想情况下,如果它无法检索数据,它应该响应“无法连接”。

 var userID = Auth.auth().currentUser?.uid
 var ref = Database.database().reference()

 func observeDB() {
 ref.child(userID!).child("Balance").observe(.childAdded, with: { snapshot in
        let userDict = snapshot.value as! [String: Any]
        print(userDict["value"] as! String)
    })
}

1 个答案:

答案 0 :(得分:0)

问题在于您正在尝试解析循环JSON对象的catch块。我建议使用json-stringify-safe库来解决您的问题:

安装json-stringify-safe:

    $ npm install json-stringify-safe --save

溶液:

const express = require('express')
const axios = require('axios');
const app = express();
var stringify = require('json-stringify-safe');


app.get('/accounts', async (req, res) => {
    try {
        const response = await axios.get('someInvalidUrl'); // will throw error
        return res.json(response);
    } catch (e) {
        e = JSON.parse(stringify(e)); // safely parse circular JSON object
        res.send(e); // will return error as json
    }
});