Используйте зависимости Git с npm и Node на Heroku - PullRequest
30 голосов
/ 23 ноября 2011

У меня есть файл package.json:

{
    "name": "application-name"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "coffee-script": "1.1.3"
    , "express": "2.5.0"
    , "less": "1.1.5"
    , "jade": "0.17.0"
    , "connect-redis": "1.2.0"
    , "hiredis": "0.1.13"
    , "redis": "0.7.1"
    , "bcrypt": "0.4.1"
    , "promised-io": "0.3.0"
    , "jugglingdb": "git://github.com/juggy/jugglingdb.git#master"
    , "nodemailer": "0.2.3"
  }
}

, и я хочу развернуть его в Heroku.Локально работает с версией npm 1.0.105, но она душит Heroku (я также обновил npm до 1.0.105):

   -----> Heroku receiving push
   -----> Fetching custom build pack... done
   -----> Node.js app detected
   -----> Fetching Node.js binaries
   -----> Vendoring node 0.4.7
   -----> Installing dependencies with npm 1.0.105
          npm ERR! git checkout master fatal: Not a git repository: '.'
          npm ERR! Error: `git "checkout" "master"` failed with 128
          npm ERR!     at ChildProcess.<anonymous> (/tmp/node-npm-Jb2d/lib/utils/exec.js:49:20)
          npm ERR!     at ChildProcess.emit (events.js:67:17)
          npm ERR!     at ChildProcess.onexit (child_process.js:192:12)
          npm ERR! Report this *entire* log at:
          npm ERR!     <http://github.com/isaacs/npm/issues>
          npm ERR! or email it to:
          npm ERR!     <npm-@googlegroups.com>
          npm ERR! 
          npm ERR! System Linux 2.6.32-316-ec2
          npm ERR! command "/tmp/node-node-C3jD/bin/node" "/tmp/node-npm-Jb2d/cli.js" "install"
          npm ERR! cwd /tmp/build_2yzg7lk83o5m9
          npm ERR! node -v v0.4.7
          npm ERR! npm -v 1.0.105
          npm ERR! git checkout master fatal: Not a git repository: '.'
          npm ERR! 
          npm ERR! Additional logging details can be found in:
          npm ERR!     /tmp/build_2yzg7lk83o5m9/npm-debug.log
          npm not ok
    !     Failed to install dependencies with npm
    !     Heroku push rejected, failed to compile Node.js app 

Кроме того, я не вижу способа найтиполучить доступ к этому файлу журнала в /tmp.

Когда кому-либо удастся развернуть зависимость Git от Heroku (отлично работает на стороне ruby: P)?

Ответы [ 7 ]

78 голосов
/ 14 октября 2013

К вашему сведению, если на GitHub вы можете просто указать username/repository, а npm сделает все остальное.

{
    "name": "application-name"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "coffee-script": "1.1.3"
    , "express": "2.5.0"
    , "less": "1.1.5"
    , "jade": "0.17.0"
    , "connect-redis": "1.2.0"
    , "hiredis": "0.1.13"
    , "redis": "0.7.1"
    , "bcrypt": "0.4.1"
    , "promised-io": "0.3.0"
    , "jugglingdb": "juggy/jugglingdb"
    , "nodemailer": "0.2.3"
  }
}

В качестве альтернативы

Укажите один из (git / git+ssh / git+http / git+https) ://user@host/repo.git URL

Полностью задокументировано

36 голосов
/ 29 ноября 2011

Я не знаю об этом пакете, но у меня есть другие для работы с синтаксисом, как показано ниже. На героку, используя http ссылку на tar.gz

package.json:

{
    "name": "application-name"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "coffee-script": "1.1.3"
    , "express": "2.5.0"
    , "less": "1.1.5"
    , "jade": "0.17.0"
    , "connect-redis": "1.2.0"
    , "hiredis": "0.1.13"
    , "redis": "0.7.1"
    , "bcrypt": "0.4.1"
    , "promised-io": "0.3.0"
    , "jugglingdb": "https://github.com/juggy/jugglingdb/tarball/master"
    , "nodemailer": "0.2.3"
  }
}
12 голосов
/ 26 декабря 2011

Проблема в их пакете nodejs.Я отправил запрос на удаление в Heroku с исправлением, но понятия не имею, будут ли они отвечать или нет.К счастью, существует не очень хорошо документированный метод использования пользовательского пакета сборки, который позволит вам обойти эту проблему.Я разобрал пакет сборки hostjs heroku и исправил проблему - доступно здесь:

https://github.com/chrisleishman/heroku-buildpack-nodejs/tree/git_fix

Чтобы использовать это, вам лучше создать свой собственный github форк из https://github.com/heroku/heroku-buildpack-nodejsа затем сливаются в мою chrisleishman/git_fix ветку.Например (после разветвления):

git clone git@github.com:@YOUR-GITHUB-NAME@/heroku-buildpack-nodejs.git
cd heroku-buildpack-nodejs
git remote add chrisleishman git://github.com/chrisleishman/heroku-buildpack-nodejs.git
git fetch chrisleishman
git merge chrisleishman/git_fix
git push

Затем вы можете добавить переменную BUILDPACK_URL config в ваше приложение heroku.Например,

heroku config:add BUILDPACK_URL="git://github.com/@YOUR-GITHUB-NAME@/heroku-buildpack-nodejs.git

Следующим толчком к героку следует использовать специальный сборочный пакет, содержащий исправление.

4 голосов
/ 30 января 2015

Обратите внимание, что вы можете указать commit-ish , чтобы выбрать, какой коммит / ветвь / ... вы хотите установить, в форме "user/foo-project#commit-ish", см. doc .

Пример:

"dependencies": {
    "express": "visionmedia/express#some-branch",
    "mocha": "visionmedia/mocha#4727d357ea"
}
2 голосов
/ 14 мая 2012

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

https://devcenter.heroku.com/articles/nodejs-versions

1 голос
/ 17 августа 2016

У меня была похожая проблема, за исключением того, что я ссылался на частный репозиторий git. Мое решение для этого было добавить postinstall скрипт для следующего:

{
    "postinstall": "npm update && npm install package-name"
}

При обновлении и установке npm обновляет приватное репозиторий до последней версии. (https://github.com/npm/npm/issues/1727)

0 голосов
/ 27 июля 2017

Если кто-то борется с этим, используя npm 5+ (где package-lock.json вещь), убедитесь, что вы устанавливаете пакет через командную строку.

npm i my_package --save https://github.com/username/repo/archive/v6.5.2.tar.gz

Начиная с NPM 5.0.3, простое добавление его к package.json и запуск npm i не обновят package-lock.json (grrr).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...