javascript - console.log(错误.消息); & console.log(err[0].message);

标签 javascript node.js twitter error-handling console.log

当使用 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/

相关文章:

android - Android 中的 Facebook 和 Twitter 集成

java - 推文值(value)预测 : What sort of analysis (Bayesian? ) 可能会预测 Twitter 用户对一条推文的评价是多少?

c# - 未将对象引用设置为实例

javascript - 如何检测页面是否因第 3 方 javascript 而变慢?

javascript - Android 中的 XmlHttpRequest 双重发布问题

node.js - ExpressJS 作为编排层?

parsing - Node CSV 解析器输出问题

javascript - "Could not parse reminder error"-Django

javascript - sessionStorage 与 cookie 中的 JWT token ?

javascript - node.js 和 HTML 页面?如何结合?