1

私はすでに「グーグルで検索」しており、ここで多くの同様の回答を見つけました。これは私の正確なエラーです。

$ git push heroku master
Counting objects: 43, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (35/35), done.
Writing objects: 100% (43/43), 5.19 KiB, done.
Total 43 (delta 10), reused 0 (delta 0)


 !     Push rejected, no Cedar-supported app detected

To git@heroku.com:vidperdiem.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:vidperdiem.git'

はい、Heroku ガイド (NPM のインストールについて説明されています) に従い、Heroku のリポジトリがリモートであることを確認しました

npm インストール

これらは私のファイルです

パッケージ.json

{
  "name": "vidperdiem",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "3.4.4",
    "jade": "*",
    "stylus": "*"
  },
  "engines": {
    "node": "0.8.x",
    "npm": "1.2.x"
  }
}


プロフィール

web: node app.js


app.js

/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', function(req, res){
  res.render('index', {
    title: 'Home'
  });
});

app.get('/about', function(req, res){
  res.render('about', {
    title: 'About'
  });
});

app.get('/contact', function(req, res){
  res.render('contact', {
    title: 'Contact'
  });
});

app.get('/privacy', function(req, res){
  res.render('privacy', {
    title: 'Privacy'
  });
});

app.get('/terms', function(req, res){
  res.render('terms', {
    title: 'Terms'
  });
});

app.get('/users', user.list);

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

2 に答える 2

6

多くの人が経験したように、この課題に直面している場合は、基本をカバーしていることを確認してください。私の場合、Heroku にプッシュするときはルートにいる必要がありました。これがどのように起こったのかを説明して、このフラストレーションを回避できるようにしましょう。

最初に Github でレポを作成し、それをローカルに複製しました。次に、ターミナルで、README.md.gitignoregithub で初期化したプロジェクトに入りました。

その時点で、nodejs アプリを作成し、「app」という名前を付けました。

次に、Heroku でアプリを作成しました (長いアプリ名を取得する代わりに名前を付ける方が簡単なので、サイトを介して) heroku create

ターミナルに戻り、heroku をリモートとして追加しましたheroku git:remote -a appname(「appname」はリポジトリの名前です)。

ここでの問題は、Heroku でもアプリを追跡している場合、それがgithubのサブモジュールになることです。

そのため、github が変更を追跡するのと同じ場所から、heroku をリモートとして追加しました。

結論: 「アプリ」フォルダーからファイルをコピーし、ルートに戻しました。

ここに画像の説明を入力

次のファイルがルートにあることを確認してください
app.js
package.json
Procfile

于 2013-11-15T18:25:20.420 に答える
5

同様の問題を自分で理解しようとしたときに、この回答に出くわしました。

私の例では、非 Heroku デプロイメントから Heroku デプロイメントに移行しています。したがって、Herkou インスタンスは、私がセットアップした新しい (ローカル) git ブランチで実行されているため、マスターではありません。

答えは、一度考えてみれば明らかです。を呼び出すgit push heroku masterのではなく、実行する必要が git push heroku mylocalbranch:masterありました.heroku以外の古い展開をプッシュしようとしていたため、明らかにうまくいきません:)

于 2014-12-17T22:37:58.587 に答える