当使用Twitter时,如果一切顺利,那么使用err[0].message将返回You have already ___ed this tweet.,但是如果HTTP代码通过,例如由于速率限制,输出将变成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产出不受税率限制时:
You have already retweeted this tweet.那么,处理这一问题的最佳方法是什么,以确保两者都可以正确地登录,而不会导致错误或输出不明确?
发布于 2018-04-29 10:08:55
如果没有错误,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);
}
}
});https://stackoverflow.com/questions/50082432
复制相似问题