Облачные функции Firebase регистрируют ошибку: неправильный ответ функции.Вызов функции был прерван. - PullRequest
0 голосов
/ 02 мая 2019

У меня есть сайт с 2 ссылками. Один для загрузки MP3 и один для загрузки файла WAV

Например:

<a href="https://mywesbite.com/download?file=//assets.net/beethoven-fur-elise.wav" download="beethoven-fur-elise">Download WAV</a>

и

<a href="https://mywesbite.com/download?file=//assets.net/beethoven-fur-elise.mp3" download="beethoven-fur-elise">Download MP3</a>

Я написал облачную функцию для / download /, которая будет отправлять удаленный аудиофайл, чтобы пользователю было предложено загрузить файл, а не открывать его в новой вкладке и воспроизводить.

Ссылка MP3 работает, но файл WAV не работает, и журналы ошибок показывают это

Error: incorrect function response. Function invocation was interrupted.
Function execution took 2941 ms, finished with status: 'response error'

Обратите внимание, что на моем локальном компьютере работают как WAV, так и MP3.

Размер файлов MP3 составляет 3-6 МБ

Размер файлов WAV составляет 40 МБ

Функция Firebase Cloud

const express = require('express');
const request = require('request');
const cors = require('cors');
const helmet = require('helmet');

const downloadApp = express();

downloadApp.use(helmet());
downloadApp.use(
  cors({
    origin: true
  })
);

downloadApp.get('/download', (req, res) => {
  res.set(
    'Cache-control',
    `public, max-age=${CONFIG.TIME.CACHE_IN_USERS_BROWSER}, s-maxage=${
      CONFIG.TIME.CACHE_IN_CDN
    }`
  );

  /**
   *
   * contentType = 'audio/wav'
   *          OR
   * contentType = 'audio/mpeg'
   *
   * */

  res.setHeader('Content-Type', contentType);
  res.setHeader('Content-disposition', `attachment; filename="${filename}"`);

  // External URL to MP3 or WAV
  const externalUrl = 'https://external-website.com/something.wav';

  request
    .get(externalUrl)
    .on('error', function(err) {
      console.error('Download Error: ', err);
    })
    .pipe(res);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...