Trying to push my Node.js app to Heroku, Error: ENOENT with jade npm

As the title says, I'm trying to push my app to Heroku, but I keep getting these errors:

291 error Error: ENOENT, chmod '/tmp/build_htb3av307zzc/node_modules/jade/bin/jade'
292 error If you need help, you may report this log at:
292 error     <http://github.com/isaacs/npm/issues>
292 error or email it to:
292 error     <npm-@googlegroups.com>
293 error System Linux 2.6.32-350-ec2
294 error command "/tmp/node-node-lBSf/bin/node" "/tmp/node-npm-vbZC/cli.js" "rebuild"
295 error cwd /tmp/build_htb3av307zzc
296 error node -v v0.10.2
297 error npm -v 1.2.15
298 error path /tmp/build_htb3av307zzc/node_modules/jade/bin/jade
299 error code ENOENT
300 error errno 34
301 verbose exit [ 34, true ]

My package.json is as follows:

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "3.1.1",
    "jade": "*",
    "mongojs": "*",
    "less": "*",
    "crypto": "*"
  },
  "engines": {
    "node": "0.10.2",
    "npm": "1.2.15"
  }
}

I've been googling and reading about the Error: ENOENT with jade and all the answers seem to just say, remove /bin /tmp from .gitignore, this sadly did not fix the issue for me, I'm turning to you guys for help, anything would be appreciated I'm about to throw my monitor :) Thanks!

I had the same problem and it's caused by bin/ being in your .gitignore file. The file "/tmp/build_htb3av307zzc/node_modules/jade/bin/jade" isn't being found when you push to heroku because it hasn't been committed.

Removing bin/ from my .gitignore and making sure all my bin directories inside node_modules were committed fixed the error for me.

EDIT: I have discovered that as Gavin mentioned, another approach is to remove node_packages from git all together so Heroku generates them from your package.json.

I wonder whether you're suffering in the same way as this poster Error installing jade on heroku ... if you have added node_modules to git then that's likely your problem. Remove it and retry.