heroku deploy failed using nodejs

2019-03-21 10:57发布

问题:

I am trying to push local files to heroku and getting below error. I have my code in github

Can someone help me in this. Thanks

$ heroku buildpacks:set heroku/nodejs
Buildpack set. Next release on haz will use heroku/nodejs.
Run git push heroku master to create a new release using this buildpack.
$ git push heroku master
Counting objects: 693, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (500/500), done.
Writing objects: 100% (693/693), 63.10 MiB | 2.54 MiB/s, done.
Total 693 (delta 220), reused 639 (delta 171)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Using set buildpack heroku/nodejs
remote: 
remote:  !     Push rejected, failed to detect set buildpack heroku/nodejs
remote: More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote: 
remote: Verifying deploy....
remote: 
remote: !   Push rejected to haz.
remote: 
To https://git.heroku.com/haz.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/haz.git'
$ 

for package.json

{
  "name": "haz",
  "version": "1.0.0",
  "description": "Hazzir: An Ionic project",
  "private": "true",
  "dependencies": {
    "express": "^4.13.3"    
  },
  "main": "serve.js",
  "scripts": {
    "start": "node serve.js",
    "postinstall": "bower install && grunt build",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "engines": {
      "node": "4.1.2",
      "npm": "3.4.0"
    },

  "keywords": [
    "Haz",
    "product"
  ],
  "author": "Asim Khan",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/asimkh/apps/issues"
  },
  "homepage": "https://github.com/asimkh/apps#readme"
}

I tested locally, app is runnning at port 5000 using express

var express = require('express'),
    app = express();

app.use(express.static('www'));

// CORS (Cross-Origin Resource Sharing) headers to support Cross-site HTTP requests
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});

// API Routes
// app.get('/blah', routeHandler);

app.set('port', process.env.PORT || 5000);

app.listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});

回答1:

I see a few issues here

1) You need a procfile - https://devcenter.heroku.com/articles/getting-started-with-nodejs#define-a-procfile

2) You don't specify the engines in your package.json

"engines": {
  "node": "0.10.x"
},

See here- https://discussion.heroku.com/t/the-official-node-js-buildpack-is-going-on-a-diet/100

3) You have comitted your node_modules directory to git. You should be able to download packages using npm install (that's what your packages.json file is for)

Delete this directory, and commit the delete to git. Then, create a .gitignore file. Add the following line to your .gitignore file:

node_modules

commit this .gitignore file to your repository.

Git will now ignore your node_modules_ directory



回答2:

Try: git add -f package.json It worked for me.



回答3:

git init and then readding heroku remote worked

heroku git:remote -a yourappname