使用Twitter API时,如果一切正常,那么使用err[0].message
将返回You have already ___ed this tweet.
,但是如果HTTP状态代码通过,比如由于速率限制,则输出将变为{{1这可能导致脚本在失败时停止。
这可以通过将TypeError: Cannot read property 'message' of undefined
更改为err[0].message
来解决,但是,如果一切正常,则会返回err.message
而不是undefined
。
使用You have already ____ed this tweet.
时的小部件:
err.message
速率限制时的输出:
T.post('statuses/retweet', id, function(err, response){
// log failures
if(err){
console.log(err.message);
不限速时的输出:
HTTP Error: 429 Too Many Requests
使用undefined
时的小部件:
err[0].message
速率限制时的输出:
T.post('statuses/retweet', id, function(err, response){
// log failures
if(err){
console.log(err.message);
不限速时的输出:
TypeError: Cannot read property 'message' of undefined
那么处理这个问题的最佳方法是什么才能确保两者都能正确记录而不会导致错误或输出不清楚?
答案 0 :(得分:1)
如果没有错误,err
将为undefined
如果发生速率限制,err
将为HTTP Error: 429 Too Many Requests
如果发生其他错误,err
将是一个数组。
您可以检查err
类型以处理所有方案。
'use strict';
let _ = require('lodash');
T.post('statuses/retweet', id, function (err, response) {
if (err) {
if (_.isArray(err)) {
// handles You have already ___ed this tweet.
console.log(err[0].message);
} else {
// this takes care of HTTP Error: 429 Too Many Requests
console.log(err.message);
}
}
});