当使用 Twitter API 时,如果一切顺利,则使用 err[0].message
将返回 You've had ___ed this tweet.
,但是如果 HTTP 状态代码通过,例如由于速率限制,则输出将变为 TypeError: Cannot read property 'message' of undefined
这可能导致脚本因失败而停止。
可以通过将 err[0].message
更改为 err.message
来解决此问题,但是,如果一切顺利,它将返回 undefined
而不是您已经____这条推文。
。
使用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.
那么处理这个问题的最佳方法是什么,以确保两者都可以正确记录,而不会导致错误或输出不清楚?
最佳答案
如果没有错误,err
将为undefined
如果发生速率限制,err
将是 HTTP 错误: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);
}
}
});
关于javascript - console.log(错误.消息); & console.log(err[0].message);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50082432/