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.