Error installing jade on heroku

2019-05-14 07:07发布

问题:

I get an error when pushing my node.js-app to Heroku. It used to work, but now, for some reason, it's failing.

When I push to Heroku I get the following:

-----> Node.js app detected
-----> Resolving engine versions
   Using Node.js version: 0.6.13
   Using npm version: 1.1.4
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
   npm http GET https://registry.npmjs.org/express/2.5.9
   npm http GET https://registry.npmjs.org/jade/0.15.4
   npm http 200 https://registry.npmjs.org/jade/0.15.4
   npm http GET https://registry.npmjs.org/jade/-/jade-0.15.4.tgz
   npm http 200 https://registry.npmjs.org/express/2.5.9
   npm http GET https://registry.npmjs.org/express/-/express-2.5.9.tgz
   npm http 200 https://registry.npmjs.org/jade/-/jade-0.15.4.tgz
   npm http 200 https://registry.npmjs.org/express/-/express-2.5.9.tgz
   npm ERR! error installing jade@0.15.4

   npm ERR! Refusing to delete: /tmp/build_dzqaws2o7lx4/node_modules/.bin/jade not in /tmp/build_dzqaws2o7lx4/node_modules/jade
   npm ERR! File exists: /tmp/build_dzqaws2o7lx4/node_modules/.bin/jade
   npm ERR! Move it away, and try again.
   npm ERR!
   npm ERR! System Linux 2.6.32-348-ec2
   npm ERR! command "/tmp/node-node-HkEc/bin/node" "/tmp/node-npm-X5Wz/cli.js" "install" "--production"
   npm ERR! cwd /tmp/build_dzqaws2o7lx4
   npm ERR! node -v v0.6.13
   npm ERR! npm -v 1.1.4
   npm ERR! path /tmp/build_dzqaws2o7lx4/node_modules/.bin/jade
   npm ERR! code EEXIST
   npm ERR! message Refusing to delete: /tmp/build_dzqaws2o7lx4/node_modules/.bin/jade not in /tmp/build_dzqaws2o7lx4/node_modules/jade
   npm ERR! errno {}
   npm http GET https://registry.npmjs.org/connect
   npm http GET https://registry.npmjs.org/mime/1.2.4
   npm http GET https://registry.npmjs.org/qs
   npm http GET https://registry.npmjs.org/mkdirp/0.3.0
   npm ERR!
   npm ERR! Additional logging details can be found in:
   npm ERR!     /tmp/build_dzqaws2o7lx4/npm-debug.log
   npm not ok
 !     Failed to install --production dependencies with npm
 !     Heroku push rejected, failed to compile Node.js app

My package.json is ats follows:

{
  "name": "myAppName",
  "version": "0.0.1",
  "dependencies": {
      "express": "2.5.9",
      "mongoose":"3.5.2",
      "jade": "0.15.4",
      "ejs": "0.7.1"
      },
  "engines": {
    "node": "0.6.13",
    "npm": "1.1.4"
  }
}

Because it says "Refusing to delete:..." I thought it might have been a freak error on Heroku, so I tried to push it to a new Heroku-app, but I get the same error.

Any ideas as to what is wrong? Is it my versions? Everything runs fine locally (windows). Any help will be appreciated.

回答1:

You are using an old node.js. Try adding the following to package.json:

  "engines": {
        "node": "0.8.x",
        "npm": "1.1.x"
  },

You can inspect thing more closely by logging in on the system. First you need to install Heroku Toolbelt (if you haven't already). Then:

heroku login

and

heroku run bash --app yourapp

This will give you a bash to your heroku installation. Navigate to /tmp (cd /tmp) and see what's left there. Try to remove it manually (rm -rf whatisleft).

Your jade version is out of date too (still). My heroku install with jade has:

"jade": "*"

Lastly, don't add node_modules to source control. So add it to your .gitignore file.



回答2:

You can force Heroku to clear the cache for your app:

$ heroku plugins:install heroku-repo
$ heroku repo:purge_cache -a appname