Ошибка: файл spawnSync ENOENT в Google Cloud Storage

Мне нужно создать изображение для предварительного просмотра для каждого файла, который загружается в мою корзину Google Cloud Storage. Для этого я использую пакет filepreview npm. После того, как я загружу файл, я должен увидеть новое изображение с предварительным просмотром файла, но оно отсутствует, и в журнале ошибок говорится:

Error: spawnSync file ENOENT
   at exports._errnoException (util.js:1020:11)
   at spawnSync (child_process.js:451:20)
   at Object.execFileSync (child_process.js:488:13)
   at Object.generate (/user_code/node_modules/filepreview/filepreview.js:41:40)
   at exports.generatePreviewImage.event (/user_code/index.js:27:22)
   at /var/tmp/worker/worker.js:770:24
   at process._tickDomainCallback (internal/process/next_tick.js:135:7)

Я предполагаю, что путь к файлу неверен. Может ли это быть проблемой? Имя загруженного файла — kitten.png. Вот моя функция:

exports.generatePreviewImage = event => {
  const object = event.data || event; // Node 6: event.data === Node 8+: event

  const file = storage.bucket(object.bucket).file(object.name);
  const filePath = `gs://${object.bucket}/${object.name}`;
  const newFilePath = `gs://${object.bucket}/${object.name}-thumb.png`;

  console.info(`filePath: ${filePath}`); // This logs 'file: gs://my-bucket/kitten.png'
  console.info(`newFilePath: ${newFilePath}`); // This logs 'gs://my-bucket/kitten.png-thumb.png'

  return filepreview.generate(filePath, newFilePath, function(error) {
    if (error) {
      return console.info('Error is now: ', error);
    }
    console.info(`File preview is: ${newFilePath}`);
  });
}

Предполагается ли, что этот «предварительный просмотр файла» понимает, как работать с URL-адресами Google Cloud Storage, начинающимися с «gs»? Подозреваю, что нет.

Doug Stevenson 27.01.2019 18:20

@DougStevenson - я думаю, ты прав. Я полагаю, что правильный способ сделать это — загрузить файл локально, выполнить работу, а затем загрузить новый сгенерированный файл обратно в корзину. Я делаю это сейчас, но использую другой пакет, но у меня другая ошибка. См. новый вопрос: stackoverflow.com/questions/54417900/…

decebal 29.01.2019 10:39

Я получаю ту же ошибку из заголовка этого поста, даже если я загружаю файл и использую filepreview, поэтому он не связан только с URL-адресами gs://.

decebal 29.01.2019 18:48

Вы должны иметь возможность скачивать локально с помощью SDK и загружать обратно. Это обычная схема. Вы можете найти его в официальных образцах. github.com/firebase/functions-samples/tree/Node-8/…

Doug Stevenson 29.01.2019 18:53

@DougStevenson - я использую не Firebase, а Google Cloud Storage. Во всяком случае, я могу скачать и загрузить файл, проблема с самой конвертацией.

decebal 29.01.2019 20:49

Не имеет значения, Firebase просто упаковывает те же облачные продукты. Шаблон сохраняется, независимо от того, какие SDK вы используете. Возможно, вам следует показать вывод всех ваших журналов печати, чтобы увидеть, имеют ли они смысл.

Doug Stevenson 29.01.2019 21:51

@DougStevenson - я просмотрел отправленные вами функции Firebase, но они применяются только к загруженным изображениям, и это уже работает для меня. Так что я могу сделать это для изображения, загруженного в ведро, но я не могу сделать это для файлов PDF (или любых других файлов, но я ориентируюсь как минимум на PDF. Если мне удастся сделать это для изображения и PDF-файлов, этого достаточно). Извините, я не слишком ясно выразился по этому поводу. Пожалуйста, посмотрите мой другой пост и спасибо за ваши советы: stackoverflow.com/questions/54417900/…

decebal 30.01.2019 10:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
288
0

Другие вопросы по теме