在noku上使用Git依赖项和在Heroku上使用Node

git node.js heroku npm

56181 观看

7回复

我有这个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中的该日志文件。

任何人都成功在Heroku上部署Git依赖(在ruby方面工作正常:P)?

作者: Julien 的来源 发布者: 2019 年 6 月 9 日

回应 (7)


12

决定

问题出在他们的nodejs buildpack中。我已经向Heroku发送了一个拉取请求,但是我不知道他们是否或何时会做出回应。幸运的是,有一个使用自定义buildpack的文档记录不太完整,这将允许您解决该问题。我已经分叉了heroku的nodejs buildpack并修复了问题 - 可在此处获得:

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

要使用它,你最好创建自己的https://github.com/heroku/heroku-buildpack-nodejs的github分支,然后在我的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_URLconfig变量添加到heroku应用程序中。例如

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

然后,对heroku的下一次推送应该使用包含修复的自定义buildpack。

作者: Chris Leishman 发布者: 26.12.2011 09:49

78

仅供参考,如果它在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.giturl之一

完整记录

作者: code ninja 发布者: 13.10.2013 10:28

35

我不知道这个包,但我有其他人使用如下语法。在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"
  }
}
作者: Derek Bredensteiner 发布者: 29.11.2011 06:19

3

请注意,您可以指定commit-ish来选择要安装的提交/分支/ ...,在表单中"user/foo-project#commit-ish",请参阅doc

一个例子:

"dependencies": {
    "express": "visionmedia/express#some-branch",
    "mocha": "visionmedia/mocha#4727d357ea"
}
作者: laike9m 发布者: 30.01.2015 07:46

2

不确定在这个日期它是同一个问题,但我遇到了相同的错误消息,我发现我能够通过显式指定节点的版本和每页的npm来解决它:

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

作者: prototype 发布者: 14.05.2012 03:41

1

我有一个类似的问题,除了我引用私人git仓库。我的解决方案是添加以下postinstall脚本:

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

更新和安装使npm将私人仓库更新为最新。(https://github.com/npm/npm/issues/1727

作者: wlingke 发布者: 16.08.2016 09:22

0

如果有人在使用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)。

作者: rguerrettaz 发布者: 26.07.2017 11:40
32x32