Sharp пакет Heroku проблема развертывания - PullRequest
5 голосов
/ 29 марта 2019

Я развертываю свое приложение NodeJ для Heroku. Нет проблем при запуске приложения с помощью nodemon локально.

Однако, когда я пытаюсь нажать на Heroku Master, кажется, что пакет " sharp " вызывает проблему:

remote: -----> Установка зависимостей

remote: установка узловых модулей (package.json + package-lock)

пульт:

пульт:> sharp@0.22.0 установить / tmp / build_4cfeda2379ea362c72ac083b57638cce / node_modules / sharp

remote:> (установка узла / libvips && установка узла / dll-copy && prebuild-install) || (пересборка узла && установка узла / dll-копия)

пульт:

пульт: информация четкая Загрузка https://github.com/lovell/sharp-libvips/releases/download/v8.7.4/libvips-8.7.4-linux-x64.tar.gz

удаленный:
/tmp/build_4cfeda2379ea362c72ac083b57638cce/node_modules/sharp/install/libvips.js:86

удаленный: выдать новую ошибку (Status ${response.statusCode});

пульт: ^

пульт:

пульт: ошибка: статус 403

пульт: в /tmp/build_4cfeda2379ea362c72ac083b57638cce/node_modules/sharp/install/libvips.js:86:17

пульт: у f (/tmp/build_4cfeda2379ea362c72ac083b57638cce/node_modules/once/once.js:25:25)

удаленный: на ClientRequest.protocol.request.res (/tmp/build_4cfeda2379ea362c72ac083b57638cce/node_modules/simple-get/index.js:63:5)

remote: at Object.onceWrapper (events.js: 277: 13)

remote: at ClientRequest.emit (events.js: 189: 13)

remote: в HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js: 556: 21)

remote: в HTTPParser.parserOnHeadersComplete (_http_common.js: 109: 17)

удаленный: в TLSSocket.socketOnData (_http_client.js: 442: 20)

удаленный: на TLSSocket.emit (events.js: 189: 13)

удаленный: в addChunk (_stream_readable.js: 284: 12)

remote: make: Вход в каталог '/ TMP / build_4cfeda2379ea362c72ac083b57638cce / node_modules / острый / сборки'

remote: TOUCH Release / obj.target / libvips-cpp.stamp

пульт: CXX (цель) Release / obj.target / sharp / src / common.o

remote: ../src/common.cc:25:10: фатальная ошибка: vips / vips8: нет такой файл или каталог

пульт: #include

пульт: ^ ~~~~~~~~~~~

remote: компиляция прекращена.

remote: sharp.target.mk:128: рецепт для цели Ошибка «Release / obj.target / sharp / src / common.o»

remote: make: *** Ошибка [Release / obj.target / sharp / src / common.o] 1

remote: make: Выходящий каталог '/ TMP / build_4cfeda2379ea362c72ac083b57638cce / node_modules / острый / сборки'

Обновление:

Попробуйте удалить sharp из package.json и снова добавить его, используя npm, на этот раз установить sharp работы ... Я до сих пор не знаю, почему.

remote: -----> Установка зависимостей

remote: установка узловых модулей (package.json + package-lock)

пульт:

пульт:> sharp@0.22.0 установить / tmp / build_5c8d3b01594e0b86f9d3e0d372534414 / node_modules / sharp

remote:> (установка узла / libvips && установка узла / dll-copy && prebuild-install) || (пересборка узла && установка узла / dll-копия)

пульт:

пульт: информация четкая Загрузка https://github.com/lovell/sharp-libvips/releases/download/v8.7.4/libvips-8.7.4-linux-x64.tar.gz

remote: добавлено 57 пакетов от 92 участников и проверено 20393 пакетов за 10.683 с

remote: найдено 62 уязвимости низкой серьезности

remote: запустите npm audit fix, чтобы исправить их, или npm audit для получения более подробной информации

Удаленный:

Удаленный: -----> Сборка

Удаленный:

Удаленный: -----> Кэширование сборки

remote: - node_modules

remote:

remote: -----> Удаление devDependencies

remote: удалено 606 пакетов и проверено 497 пакетов в8.181s

Удаленный: найдено 0 уязвимостей

Удаленный:

Удаленный:

Удаленный: -----> Сборка выполнена успешно!

1 Ответ

1 голос
/ 08 апреля 2019

Есть много людей с этой проблемой, она связана с libvips как с не очень четкой зависимостью.

На github в этот комментарий к проблеме проблема объяснена:

Предварительно скомпилированные двоичные файлы sharp гарантированно будут работать только с предварительно скомпилированными двоичными файлами libvips.

Если загрузка предварительно скомпилированного бинарного файла libvips не удалась, тогда sharp должен отступить.чтобы попытаться собрать себя из исходного кода.

http://sharp.pixelplumbing.com/en/stable/install/#pre-compiled-libvips-binaries предоставляет информацию об обслуживании двоичных файлов libvips с локального URL.

Причиной сбоя загрузки может бытькеш или поврежденная загрузка, о которой сообщалось в вышеупомянутой связанной проблеме на github:

Мне пришлось вручную удалить ~/.npm/_libvips/libvips-8.7.0-linux-x64.tar.gz и повторить попытку.Кажется, что загружен поврежденный файл.

Вот интересная дискуссия, касающаяся той же проблемы, связанной с Гэтсби, решение, кажется, еще не существует, даже если проблема была закрыта (до того, как был сделан какой-либо комментарий): https://github.com/gatsbyjs/gatsby/issues/1754

Однако, если проблема связана только с загрузкой по какой-либо причине, можно развернуть libvips локально, как описано в руководстве :

Предварительно скомпилированные двоичные файлы libvips
Этот модуль попытается загрузить предварительно скомпилированный пакет libvips и его зависимости на компьютерах с Linux и Windows при любом из следующих условий:

  • Еслиглобальная установка libvips, соответствующая минимальной версии
    , не найдена;
  • Если установлена ​​переменная окружения SHARP_IGNORE_GLOBAL_LIBVIPS.
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install sharp  

Если вам нужно вручную загрузить и проверить эти файлы,
вы можете сделать это с помощью https://github.com/lovell/sharp-libvips/releases

Если вы хотите установить их сукажите свое местоположение, установите параметр конфигурации
sharp_dist_base_url npm, например,

npm config set sharp_dist_base_url "https://hostname/path/" 
npm install sharp 

или установите переменную окружения SHARP_DIST_BASE_URL, например,

SHARP_DIST_BASE_URL="https://hostname/path/" npm install sharp

для использования https://hostname/path/libvips-x.y.z-platform.tar.gz.

Так что это немного предыстории, я знаю, что это не может быть воспринято как ответ с решением: /

...