Позаботьтесь о том, чтобы правильно обрабатывать ошибки (возможно, повторно вставив блок в тему pubsub).

ался загрузить видео на YouTube с помощью облачной функции Firebase.

Что мне нужно, это когда пользователь загружает видео в облачное хранилище firebase, запускается событие functions.storage.object (). OnFinalize, и в этом случае я сохраняю файл во временном месте и загружаю файл на YouTube из временного хранилища. местоположение на YouTube, после загрузки я удаляю оба файла.

Это будет хорошо работать для небольших файлов.

Но если я загружаю большой файл, то функция завершается, показывая эту ошибку

Ошибка: превышен лимит памяти. Вызов функции был прерван.

Код для загрузки видео

   var requestData = {
        'params': {
        'part': 'snippet,status'
        },
        'properties': {
        'snippet.categoryId': '22',
        'snippet.defaultLanguage': '',
        'snippet.description': "docdata.shortDesc",
        'snippet.tags[]': '',
        'snippet.title': "docdata.title",
        'status.embeddable': '',
        'status.license': '',
        'status.privacyStatus': 'public',
        'status.publicStatsViewable': ''
        }, 'mediaFilename': tempLocalFile
    };

    insertVideo(tempLocalFile, oauth2Client, requestData);

вставить видео функцию

function insertVideo( file, oauth2Client, requestData) {
    return new Promise((resolve,reject)=>{
        google.options({ auth: oauth2Client });
        var parameters = removeEmptyParameters(requestData['params']);
        parameters['auth'] = oauth2Client;
        parameters['media'] = { body:  fs.createReadStream(requestData['mediaFilename'])};
        parameters['notifySubscribers'] = false;
        parameters['resource'] = createResource(requestData['properties']);

        console.log("INSERT >>> ");
        let req = google.youtube('v3').videos.insert(parameters,  (error, received)=> {
            if (error) {
                console.log("in error")
                console.log(error);
                try {
                    fs.unlinkSync(file);
                } catch (err) {
                    console.log(err);
                } finally{
                    // response.status(200).send({ error: error })
                }
                reject(error)
            } else {
                console.log("in else")
                console.log(received.data)
                fs.unlinkSync(file);
                resolve();
            }
        }); 
    })

}

код для создания временного локального файла

           bucket.file(filePath).createReadStream()
            .on('error', (err)=> {
                reject(err)
            })
            .on('response', (response)=> {
                console.log(response)
            })
            .on('end', ()=> {
                console.log("The file is fully downloaded");
                resolve();
            })
            .pipe(fs.createWriteStream(tempLocalFile));

Каждый файл для чтения и записи обрабатывается потоками, любая идея о том, почему происходит проблема с памятью

Ответы на вопрос(2)

Ваш ответ на вопрос