web-dev-qa-db-ja.com

npmおよびNodeでGit依存関係を使用する

この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!     <[email protected]>
          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にあるログファイルにアクセスする方法を見つけられないようです。

誰もがHerokuにGit依存関係をデプロイすることに成功すると(Ruby side:P)で正常に動作しますか?

30
Julien

問題は、nodejsビルドパックにあります。修正を伴うプル要求をHerokuに送信しましたが、応答するかどうか、またはいつ応答するかわかりません。幸いなことに、カスタムビルドパックを使用するための文書化された方法はあまりよくありません。これにより、問題を回避できます。私はherokuのnodejsビルドパックを分岐し、問題を修正しました-ここから入手できます:

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

これを使用するには、 https://github.com/heroku/heroku-buildpack-nodejs の独自のgithubフォークを作成してから、私のchrisleishman/git_fix ブランチ。例えば。 (分岐後):

git clone [email protected]:@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構成変数をherokuアプリに追加します。例えば。

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

次のHerokuへのプッシュでは、修正を含むカスタムビルドパックを使用する必要があります。

12
Chris Leishman

参考までに、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

完全 文書化済み

78
code ninja

このパッケージについては知りませんが、次のような構文を扱う他の人がいます。 herokuでは、tar.gzへのhttp参照を使用します

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"
  }
}
36

commit-ish を指定して、インストールするコミット/ブランチ/ ...を"user/foo-project#commit-ish"の形式で選択できることに注意してください。 doc を参照してください。

例:

"dependencies": {
    "express": "visionmedia/express#some-branch",
    "mocha": "visionmedia/mocha#4727d357ea"
}
4
laike9m

この日付で同じ問題かどうかはわかりませんが、同じエラーメッセージが表示され、このページでノードとnpmのバージョンを明示的に指定することで解決できることがわかりました。

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

2
prototype

プライベートgitリポジトリを参照していたことを除いて、同様の問題がありました。これに対する私の解決策は、次のpostinstallスクリプトを追加することでした:

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

更新とインストールにより、npmはプライベートリポジトリを最新に更新します。 ( https://github.com/npm/npm/issues/1727

1
wlingke

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)は更新されません。

0
rguerrettaz