了解节点中的错误传播

时间:2018-01-11 20:30:25

标签: javascript node.js error-handling

我正在使用带有Node的Google Maps API来获取特定位置的格式化地址。当找不到匹配的位置时,Maps API会返回一个空数组,因此我尝试使用以下代码在响应数组为空时抛出错误:

function timeZoner(queryString) {
    const mapsApiKey = 'API_KEY';
    const googleMapsClient = require('@google/maps').createClient({
        key: mapsApiKey
    });
    const VError = require('VError');

    googleMapsClient.geocode({
        address: queryString
    }, function(err, response) {

        if (!err) {

            returnedResults = response.json.results;
            if (returnedResults.length < 1) {
                console.log('no match found');
                var err1 = new Error;
            }

            var err2 = new VError(err1, 'no matched location');
            console.log(err2.message);

        } else {
            console.log('Maps API error');
        }
    });
};

timeZoner('this location name will not match');

根据上面的示例,控制台将记录“找不到匹配项”&#39;正如预期的那样,err1永远不会被设置,或者至少没有触发err2并在控制台中记录其消息,因为我认为它应该基于the VError docs。有人可以提供有关错误未被触发的原因的见解吗?

我无法解决Node中的错误,因为我对JS相对较新,而且我是Node的新手。我知道error-first callbacks并且看到googleMapsClient.geocode可能是错误未触发的原因,但我认为VError应该有助于此。我感谢任何帮助。

0 个答案:

没有答案