Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Node.js将图像上载到Twitter会导致HTTP错误400(错误请求)_Javascript_Node.js_Twitter_Discord_Discord.js - Fatal编程技术网

Javascript 通过Node.js将图像上载到Twitter会导致HTTP错误400(错误请求)

Javascript 通过Node.js将图像上载到Twitter会导致HTTP错误400(错误请求),javascript,node.js,twitter,discord,discord.js,Javascript,Node.js,Twitter,Discord,Discord.js,我正试图通过一个不和谐的频道将图片上传到Twitter上。这是我正在使用的代码: var编号=0; 函数downloadJPG(url){//此函数以jpg格式下载图像 request.get(url.on('error',console.error).pipe(fs.createWriteStream('image.jpg')); } if(message.attachments.every(attachIsImageJPG)){ 下载jpg(message.attachments.first

我正试图通过一个不和谐的频道将图片上传到Twitter上。这是我正在使用的代码:

var编号=0;
函数downloadJPG(url){//此函数以jpg格式下载图像
request.get(url.on('error',console.error).pipe(fs.createWriteStream('image.jpg'));
}
if(message.attachments.every(attachIsImageJPG)){
下载jpg(message.attachments.first().url);
var imageToPostJPG=fs.readFileSync('image.jpg');
client.post('media/upload',{media:imageToPostJPG},函数(err,data,res){
if(err)console.log(err);
控制台日志(数据);
数字=数字+1
client.post('status/update',{status:'Success Cop#'+number,media_id:data.media_id_string},函数(err,params,res){
if(err)console.log(err);
控制台日志(params);
});
});
}
图像应该以状态上传到Twitter,但只有状态被上传,这是我在控制台中看到的:

错误:HTTP错误:400错误请求
应请求。\回调(C:\Users\Silvano\Desktop\Twitter\node\u modules\Twitter\lib\Twitter.js:221:9)
at Request.self.callback(C:\Users\Silvano\Desktop\Twitter\node\u modules\Request\Request.js:185:22)
at Request.emit(events.js:200:13)
应要求。(C:\Users\Silvano\Desktop\Twitter\node\u modules\request\request.js:1161:10)
at Request.emit(events.js:200:13)
在收到消息时。(C:\Users\Silvano\Desktop\Twitter\node\u modules\request\request.js:1083:12)
在Object.onceWrapper(events.js:288:20)
在IncomingMessage.emit(events.js:205:15)
在endReadableNT(_stream_readable.js:1154:12)
在处理和拒绝时(内部/process/task_queues.js:84:9)
{
请求:'/1.1/media/upload.json',
错误:“无法识别媒体类型。”
}

如何解决此错误并将图像上载?

我认为问题在于流必须在
readFileSync
读取之前完成

// modified to indicate completion by calling callback
function downloadJPG(url, callback) { //This function downloads the image in jpg format
  let stream = request.get(url).on('error', console.error).pipe(fs.createWriteStream('image.jpg'));
  stream.on('finish', callback);
}

// modified to do the twtr work in the callback
if (message.attachments.every(attachIsImageJPG)) {
    downloadJPG(message.attachments.first().url, function() {
        var imageToPostJPG = fs.readFileSync('image.jpg');
        client.post('media/upload', {media: imageToPostJPG}, function(err, data, res) {
        if (err) console.log(err);
        console.log(data);
        number = number+1
        client.post('statuses/update', {status: 'Success Cop #'+number, media_ids: data.media_id_string}, function(err, params, res) {
            if (err) console.log(err);
            console.log(params);
            });
        });
    });
}
旁注:我发现经过一两个步骤后,回调样式太难编写和读取,而承诺更可取