I have this package.json file:
{
"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"
}
}
and I want to deploy to Heroku. It works fine locally with npm version 1.0.105, but it chokes on Heroku (I updated the npm there to 1.0.105 as well):
-----> 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
Also, I do not seem to find a way to get access to that log file in /tmp.
As anyone succeed deploying a Git dependency on Heroku (works fine on ruby side :P) ?
I had a similar issue except I was referencing a private git repo. My solution for this was to add a
postinstall
script for the following:The update & install makes npm update the private repo to latest. (https://github.com/npm/npm/issues/1727)
If anyone's struggling with this using npm 5+ (where
package-lock.json
is a thing), ensure you install the package via command line.npm i my_package --save https://github.com/username/repo/archive/v6.5.2.tar.gz
As of NPM 5.0.3 simply adding it to
package.json
and runningnpm i
will not updatepackage-lock.json
(grrr).Note that you can specify commit-ish to select which commit/branch/... you want to install, in the form
"user/foo-project#commit-ish"
, see doc.An example:
Not sure it's the same issue at this date, but I experienced an error message that was the same, and I found I was able to resolve it by explicitly specifying the version of node and npm per this page:
https://devcenter.heroku.com/articles/nodejs-versions
The problem is in their nodejs buildpack. I've sent a pull request to Heroku with a fix, but I have no idea if or when they'll respond. Fortunately, there's a not-very-well documented method for using a custom buildpack, which will allow you to work around the issue. I've forked heroku's nodejs buildpack and fixed the problem - available here:
https://github.com/chrisleishman/heroku-buildpack-nodejs/tree/git_fix
To use this, you're best creating your own github fork of https://github.com/heroku/heroku-buildpack-nodejs and then merging in my
chrisleishman/git_fix
branch. E.g. (after forking):You can then add the
BUILDPACK_URL
config variable to your heroku app. E.g.The next push to heroku should then use the custom buildpack, containing the fix.
FYI if its on GitHub you can just specify the
username/repository
and npm will do the rest.Alternatively
Specify one of (
git
/git+ssh
/git+http
/git+https
)://user@host/repo.git
urlsFully documented