CollectionFS приводит к сбою приложения на героку - не удается прочитать свойство «изменить размер» неопределенного

Я развернул приложение meteor на heroku и использовал CollectionFS для загрузки файлов изображений в Amazon S3. Все работало нормально, пока я не загрузил несколько изображений, а затем мне пришлось перезапустить сервер из-за развертывания.

Мой код для трансформации:

transformWrite: function(fileObj, readStream, writeStream) {
    try {
      gm(readStream, fileObj.name()).resize(width, height, opts.resize).interlace(opts.interlace).stream().pipe(writeStream);
    } catch (error) {
      throw new Meteor.Error(error);
    }
  }

Но после того первого перезапуска я не смог снова запустить сервер. Это ошибка, которую я получаю.

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch.
Stopping process with SIGKILL
FS.Transform.createWriteStream transform function failed, Error:
Exception in queued task: TypeError: Cannot read property 'resize' of undefined
State changed from starting to crashed
Process exited with status 137

В настоящее время я закомментировал весь код collectionFS, и это помогло мне восстановить сайт. Код отлично работает на локальном компьютере, однако развертывание heroku продолжает давать сбои.


person Shailendra Pal    schedule 23.12.2015    source источник


Ответы (1)


Этот ключ к вашей проблеме таков: TypeError: Cannot read property 'resize' of undefined.

Смотрите в своем коде: gm(readStream, fileObj.name()).resize(...)

Другими словами, gm не определено, и вы можете с уверенностью предположить, что graphicsmagick не установлен на вашем экземпляре heroku.

Попробуйте использовать это: https://github.com/mcollina/heroku-buildpack-graphicsmagick

person ejb    schedule 23.12.2015
comment
Я посмотрел журнал сборки, heroku устанавливает этот пакет github.com/ello/ heroku-buildpack-imagemagick-cedar-14 Но раньше это уже работало. Это не должно было дать сбой после другого развертывания. - person Shailendra Pal; 24.12.2015