2016-12-22 17 views
0

Also ich befolge eine Anleitung zum Hochladen von Bildern auf Twitter mit Twit w Knoten.TypeError: "Rückruf" -Argument muss eine Funktion sein

Dies ist mein 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!'); 
      } 
     } 
    ); 
    } 
    }); 
} 

fehlt mir etwas mit der Callback-Funktion, weiß ich, ob musste eine Funktion sein, aber ich kann nicht sehen, warum meine func nicht funktioniert Vielleicht.

Fehler:

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

Voll Code:

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 
); 

komplette Fehler:

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 
+0

Sie müssen die beiden Leitungen zu beheben, die 'sagen, wenn (err!) {' Durch die Ausrufezeichen zu entfernen: 'if (err) {' Wenn Sie das tun, sollte der Code arbeiten; es hat für mich getan. Ich bin auch ein bisschen verwirrt, weil der Fehler, den du erwähnst, weniger wie eine Fehlermeldung aussieht und eher wie eine Skriptzeile, die einen werfen soll; Woher genau bekommst du das? Die Konsole ...? –

+0

Das habe ich schon gemacht. Und immer noch der gleiche Fehler. Ja, von der Konsole. – Ghamtre

+0

Können Sie die genaue Fehlermeldung posten, die Sie in Ihrer Konsole erhalten? Der vollständige Text? –

Antwort

4

Ihr die setInterval deklarieren() falsch ist, ist der richtige Weg

setInterval (function() {upload_random_image()}, 10000);

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(function(){ 
    upload_random_image() 
},10000); 
Verwandte Themen