Облачные функции firebase: создание миниатюр с помощью библиотеки Sharp не генерирует токен доступа - PullRequest
1 голос
/ 06 мая 2020

Я генерирую эскизы изображений с помощью библиотеки sharp следующим образом:

    const filePath128       =   path.join(path.dirname(filePath), `${_128_PREFIX}${fileName}`);
    const filePath512       =   path.join(path.dirname(filePath), `${_512_PREFIX}${fileName}`);
    const filePath1024      =   path.join(path.dirname(filePath), `${fileName}`);

    const uploadStream128   =   bucket.file(filePath128).createWriteStream({metadata});
    const uploadStream512   =   bucket.file(filePath512).createWriteStream({metadata});
    const uploadStream1024  =   bucket.file(filePath1024).createWriteStream({metadata});

    const pipeline128       =   sharp();
    pipeline128.resize(_128_MAX_WIDTH, _128_MAX_HEIGHT).pipe(uploadStream128);
    const pipeline512       =   sharp();
    pipeline512.resize(_512_MAX_WIDTH, _512_MAX_HEIGHT).pipe(uploadStream512);
    const pipeline1024      =   sharp();
    pipeline1024.resize(_1024_MAX_WIDTH, _1024_MAX_HEIGHT).pipe(uploadStream1024);

    bucket.file(filePath).createReadStream().pipe(pipeline128);
    bucket.file(filePath).createReadStream().pipe(pipeline512);
    bucket.file(filePath).createReadStream().pipe(pipeline1024);

    return new Promise((resolve, reject) => {

        let finishCount     =   0;

        const checkFinish = (ee: any) => {
            finishCount++;
            console.log('finishCount: ', finishCount, ee);
            if (finishCount === 3) { resolve(); }
        }

        uploadStream128.on('finish', checkFinish).on('error', checkFinish);
        uploadStream512.on('finish', checkFinish).on('error', checkFinish);
        uploadStream1024.on('finish', checkFinish).on('error', checkFinish);
    });

Все эскизы изображений создаются без каких-либо проблем. Но токен доступа для них по умолчанию не создавался. В консоли Firebase я даже не могу просматривать сгенерированные файлы изображений. После того, как я сделаю ссылку Create new access token с консоли, изображение станет доступным для просмотра.

Любая помощь в том, как решить эту ситуацию?

Спасибо.

1 Ответ

1 голос
/ 06 мая 2020

В настоящее время эту проблему нельзя решить с помощью облачных функций. Вы можете создать URL-адрес загрузки программно из клиентского приложения Firebase (которое создаст токен), но не из внутреннего кода.

...