簡體   English   中英

不斷收到功能錯誤,不知道為什么

[英]Keep getting function error not sure why

不確定我在這里做錯了什么...當我嘗試使用 nodejs 上的 knox 庫將視頻(多部分)從 android 上傳到 AmazonS3 時,我不斷收到此錯誤...我也在使用異步庫來等待視頻在我調用回調(cb)下一個函數之前完成上傳這是我的錯誤:

2015-06-10T08:32:27.877193+00:00 app[web.1]:   stream.on('error', fn); 
2015-06-10T08:32:27.877195+00:00 app[web.1]:          ^ 
2015-06-10T08:32:27.877196+00:00 app[web.1]: TypeError: undefined is not a function
2015-06-10T08:32:27.877198+00:00 app[web.1]:     at Client.putStream (/app/node_modules/knox/lib/client.js:448:10)
2015-06-10T08:32:27.877200+00:00 app[web.1]:     at setupAndCreateImage (/app/routes/challenge.js:397:11)
2015-06-10T08:32:27.877201+00:00 app[web.1]:     at fn (/app/node_modules/async/lib/async.js:582:34)
2015-06-10T08:32:27.877202+00:00 app[web.1]:     at Immediate._onImmediate (/app/node_modules/async/lib/async.js:498:34)
2015-06-10T08:32:27.877204+00:00 app[web.1]:     at processImmediate [as _immediateCallback] (timers.js:358:17)

這是代碼:

function setupAndCreateImage ( cb) {
            if(req.files && req.files.mediaFile) {
                console.log("Received file:\n" + JSON.stringify(req.files));

                    //add p for pics will do v for vids
                    videoID = "v" + path.basename(req.files.mediaFile.path);
                    tmp_path = req.files.mediaFile.path;
                    //targetPathSmall = './public/img/challenges/' + videoID;
                    //videoConvert = req.files.mediaFile.name;


                    var video = req.files.mediaFile;
                    var s3Headers = {
                        'Content-Type': video.type,
                        'Content-Length': video.size,
                        'x-amz-acl': 'public-read'
                    };
                            //console.log('stdout:', stdout, targetPathSmall)
                            s3.putStream(tmp_path, videoID, s3Headers, function(err, s3response){
                                //handle, respond
                                if(err) { 
                                    console.log(err);
                                } else {
                                    s3response.resume();
                                    console.log("saved to S3");
                                    //console.log(s3response);
                                    cb(null, videoID);
                                }
                            });
                        } else {
                            videoID = "";
                            cb(null, videoID);
                        }

                    },

您將 String 作為第一個參數傳遞給s3.putStream ,其中需要 Stream 。

https://github.com/Automattic/knox/blob/master/lib/client.js#L398

你應該像這樣使用它:

s3.putStream(inputStream, videoID, s3Headers, function(err, s3response) {

如果可能,您可以通過將req.mediaFile的內容作為流讀取來填充inputStream 從代碼上看並不容易。

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM