Не удается найти модуль phantomjs в Heroku

У меня есть приложение Node.js / Express на Heroku, которое использует PhantomJS. Все работает нормально локально (я использую PhantomJS - Node wrapper, который я настроил с помощью NPM), но после развертывания на производстве я получаю сообщение об ошибке:

Ошибка Express 500: не удается найти модуль phantomjs

Я увидел, что мне нужно настроить Buildpack, поэтому я запустил:

конфигурация heroku: добавьте BUILDPACK_URL = https://github.com/stomita/heroku-buildpack-phantomjs.git git push heroku master

Но все равно получилась ошибка. Также пробовал:

конфигурация heroku: установите BUILDPACK_URL = https://github.com/stomita/heroku-buildpack-phantomjs.git git push heroku master

тот же результат.

Я думаю, что этот BUILDPACK_URL игнорируется.

Мысли?


person oriharel    schedule 01.03.2014    source источник


Ответы (2)


Это было полезно. Я перемещаю свой комментарий к ответу, потому что для этого безголового просмотра потребовалось много исследований, и детали могут помочь другим.

Фантомные имена сбивают с толку. Phantom JS не является модулем узла, и вы не можете загрузить его непосредственно из реестра npm. Вы можете загрузить исполняемый двоичный файл с phantomjs.org для установки на свой компьютер для локальной разработки и использовать сборочный пакет, чтобы установить его на Heroku.

Вы можете установить эти две популярные обертки Node для Phantom JS. Они не являются частью основного проекта phantomjs.org, но позволяют запускать эту библиотеку из приложения Node.

  1. npm phantomjs, на который есть ссылка в вопросе. Этот модуль пытается загрузить стабильную версию исполняемого файла phantomjs в качестве зависимости, поэтому npm install phantomjs --save ответил на этот вопрос, потому что двоичный файл хранится в каталоге, который сервер знает для поиска Phantom JS.
  2. фантом npm

Я решил использовать npm phantom для своей оболочки Phantom и специальный пакет сборки для установки двоичного файла Phantom JS на Heroku. Мне не нравится наличие Phantom JS 2.0 на Mac с Heroku, работающим под управлением версии 1.9.x. Есть некоторые проблемы, поэтому Linux 2.0 еще не доступен.

Heroku внес несколько незначительных изменений в синтаксис, включая необязательную установку порядка сборок с помощью флага buildpacks:add --index 1 с числовой позицией. Запустите heroku buildpacks, чтобы узнать, что вы используете и в каком порядке они устанавливаются.

Если у вас только один пакет сборки, используйте :set, а пакеты сборки должны обслуживаться более https, поэтому вы не можете просто скопировать и вставить старые примеры Phantom с http репозиториями.

Официальный пакет сборки Heroku для узлов

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-nodejs

Неофициальный пакет сборки Phantom JS (не модуль npm)

heroku buildpacks:add https://github.com/stomita/heroku-buildpack-phantomjs

person Dylan Valade    schedule 29.09.2015

Хорошо, я нашел проблему. Я забыл добавить --save в:

npm install phantomjs

Итак, это решило это:

npm install phantomjs --save
person oriharel    schedule 01.03.2014