TypeError: “callback” l'argument doit être une fonction

Je suis donc à la suite d'un guide de télécharger des images sur twitter w nœud à l'aide de twit.

C'est mon code

    function upload_random_image(){
  console.log('Opening an image...');
  var image_path = path.join(__dirname, '/random_cam/' + random_cam()),
      b64content = fs.readFileSync(image_path, { encoding: 'base64' });

  console.log('Uploading an image...');

  T.post('media/upload', { media_data: b64content }, function (err, data, response) {
    if (!err){
      console.log('ERROR');
      console.log(err);
    }
    else{
      console.log('Uploaded an image!');

      T.post('statuses/update', {
        media_ids: new Array(data.media_id_string)
      },
        function(err, data, response) {
          if (!err){
            console.log('Error!');
            console.log(err);
          }
          else{
            console.log('Posted an image!');
          }
        }
      );
    }
  });
}

Peut-être que je suis absent quelque chose avec la fonction de rappel, je sais pas si avait une fonction, mais je ne vois pas pourquoi ma fonction ne fonctionne pas.

Erreur:

throw new TypeError('"callback" argument must be a function');

Code complet:

var Twit = require('twit')
var fs = require('fs'),
path = require('path'),
Twit = require('twit'),
config = require(path.join(__dirname, 'config.js'));
var T = new Twit(config);
function random_cam(){
var random_pic = [
'1.jpg',
'2.jpg',
'3.jpg'
];
return random_pic[Math.floor(Math.random() * random_pic.length)];
}
function upload_random_image(){
console.log('Opening an image...');
var image_path = path.join(__dirname, '/random_cam/' + random_cam()),
b64content = fs.readFileSync(image_path, { encoding: 'base64' });
console.log('Uploading an image...');
T.post('media/upload', { media_data: b64content }, function (err, data, response) {
if (err){
console.log('ERROR');
console.log(err);
}
else{
console.log('Uploaded an image!');
T.post('statuses/update', {
media_ids: new Array(data.media_id_string)
},
function(err, data, response) {
if (err){
console.log('Error!');
console.log(err);
}
else{
console.log('Posted an image!');
}
}
);
}
});
}
setInterval(
upload_random_image(),
10000
);

Erreur complet:

Opening an image...
Uploading an image...
timers.js:414
throw new TypeError('"callback" argument must be a function');
^
TypeError: "callback" argument must be a function
at exports.setInterval (timers.js:414:11)
at Object.<anonymous> (/Users/imac/test/server.js:72:1)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:420:7)
at startup (bootstrap_node.js:139:9)
at bootstrap_node.js:535:3
  • Vous avez besoin de fixer les deux lignes qui disent if (!err) { en supprimant les points d'exclamation: if (err) { Si vous le faites, le code devrait fonctionner; il a fait pour moi. Je suis aussi un peu confus, parce que l'erreur que vous mentionnez ressemble moins à un message d'erreur et plus comme une ligne de script qui est censé jeter un; exactement où êtes-vous cela? La console...?
  • Je l'ai déjà fait. Et toujours le même message d'erreur. Yep, à partir de la console.
  • Pouvez-vous poster le message d'erreur exact que vous obtenez dans votre console? Le texte intégral?
  • yep, donnez-moi une seconde.
  • Il est le plein txt et mon code.
  • Ouvert timers.js regardez à la ligne 414. En d'autres termes, cette erreur n'a rien à voir avec le téléchargement des images sur twitter.
  • upload_random_image(), supprimer les parenthèses et il fonctionnera
  • SUPER! Merci Jon!
  • j'ai posté la réponse s'il vous plaît vérifiez la même.

InformationsquelleAutor Ghamtre | 2016-12-22