2016-08-27 4 views
1

これは私がHerokuで初めて試みたものです。私はherokuで "展開成功"することができましたが、私のアプリを訪ねると "アプリケーションが失敗しました"と表示されます。herokuにnodejs/mongooseを配備する

私は、このガイドに従っ: https://scotch.io/tutorials/use-mongodb-with-a-node-application-on-heroku

私はそれがURIとうまく関係しないかもしれないが、私はマングースを使用していますので、トリッキーなことがあると思います。私もmlabアドオンを使用しています。ここで

は私のバックエンドのための私の設定です:

 var request = require('request'); 
    var app = express(); 
    var mongoCredentialss = require('/mongo_credentialss.json'); 
    var conn = mongoose.connection; 
    var path = require('path'); 

    // connect to the database 
    mongoose.connect('mongodb://' + mongoCredentials.username + ':' + mongoCredentialss.password + '@ds.mlab.com:12345/mydatabase-db'); 
    mongoose.Promise = Promise; 
app.listen(3000, function() { 
    console.log('Listening on 3000...'); 
    }); 

私は本当に私はちょうど感謝に隠し.jsonファイルに自分のユーザー名とパスワードを保存し、それをローカルに動作させるために、.envを理解していませんでした。 gitignore。ガイドから、URIをノードファイルに変数として埋め込んでみました。 Herokuの設定/ *

をnodejs:私はその後、私がオーバー始めたときに、私はまた、Herokuのは、その標準buildpacksを検出していないとの定期的な問題を抱えて保管方法を「隠された環境での仕事...

あまりにもわからないんだけど***編集:

まだいくつかの問題があります。私は今、私の「モンゴcredsを」ので、私のserver.jsファイルを取り出し、次のようになります

var express = require('express'); 
var mongoose = require('mongoose'); 
mongoose.connect(process.env.MONGODB_URI); 

var Promise = require('bluebird'); 
var bodyParser = require('body-parser'); 
var randtoken = require('rand-token'); 
var cors = require('cors'); 
var request = require('request'); 
var app = express(); 

var conn = mongoose.connection; 
var fs = require('fs'); 
var path = require('path'); 

    app.listen(3000, function() { 
     console.log('Our app is running on http://localhost:' + 3000); 
    }); 

さらにいくつかのコンテキスト:バックエンドとフロントエンド:私は2つのサブフォルダを収容する一つのメインプロジェクトフォルダを、持っています。 herokuに展開すると、ディレクトリをメインフォルダに変更してすべてを展開します。

"dependencies": { 
    "bluebird": "^3.4.1", 
    "body-parser": "^1.15.2", 
    "cors": "^2.7.1", 
    "express": "^4.14.0", 
    "mongoose": "^4.5.3", 
    "my-bcrypt": "^1.0.2", 
    "rand-token": "^0.2.1", 
    "request": "^2.74.0" 
    }, 
    "engines": { 
    "node": "==6.0.0" 
    } 
} 

****** EDIT 2: Herokuのログは私の 'backend.js' を見つけることができない、それは場合に役立ちます

また、ここで私のpackage.jsonは次のようになります。 。今すぐ、私は1つのメインプロジェクトフォルダディレクトリを持っています。---> backend.js(ノード)と---> frontend.js(角)

私のpackage.jsonは次のようになりますこれは:

**"main": "frontend.js",** 
    "scripts": { 
    **"start": "node backend.js",** 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 

私が主な.jsファイルをどのように見つけているのか誤解しているかもしれません。私の理解から、 'start'はノードファイル、 'main'ファイルはangle/htmlのようなフロントエンドのものです。

+0

メインフォルダ(backend.js、frontend.js、cssファイル、htmlファイル)にすべてのサブフォルダを移動した後、私は自分のアプリケーションをローカルで実行できることを再度確認できます。しかし、新しいヒロクアプリにFRESHを導入すると、次のログが取得されます:2016-08-27T20:45:26.674272 + 00:00 heroku [web.1]:状態がクラッシュから開始に変わりました 2016-08-27T20: 45:28.574699 + 00:00 heroku [web.1]:コマンド 'node backend.js'による起動プロセス 2016-08-27T20:45:30.818329 + 00:00 heroku [web.1]:プロセスはステータス1で終了しました –

+0

2016-08-27T20:45:30.753675 ​​+ 00:00 app [web.1]:module.js:341 2016-08-27T20:45:30.753686 + 00:00 app [web.1]:throw err; 2016-08-27T20:45:30.753687 + 00:00 app [web.1]:^ 2016-08-27T20:45:30.753687 + 00:00 app [web.1]: 2016-08-27T20: 45:30.753692 + 00:00 app [web.1]:エラー:モジュール '/app/backend.js'を見つけることができません 2016-08-27T20:45:30.753694 + 00:00 app [web.1]:at関数。モジュールモジュール._load(module.js:290:25) 2016-08-27T20:45:30.753693 + 00:00 app [web.1]: –

+0

Function.Module._resolveFilename(module.js:339:15) 2016-08-27T20:45:30.753695 + 00:00 app [web.1]:Function.Module.runMain(module.js:447:10) 2016-08-27T20:45:30.753696 + 00:00アプリケーション[web.1]:起動時(node.js:148:18) 2016-08-27T20:45:30.753697 + 00:00 app [web.1]:node.js:405:3 –

答えて

1

あなたがこれを行うことによって、あなたのMLABデータベースにマングースを接続することができます:

あなたはあなたのためのデータベースを作成します(この場合はMLAB)Herokuの、プロバイダにアドオンを使用している
mongoose.connect(process.env.MONGODB_URI); 

、アプリケーションが使用できる環境変数として接続の詳細(データベースホストのURL、ユーザー名、パスワード、ポートなど)を保存します。

あなたはmongoose.connectにその環境変数process.env.MONGODB_URIに合格する必要がある理由です:それは=右データベースに接続されます)

UPDATE:あなたがあなたの質問を更新しているので、私はからこれを防ぐことができます別の問題に気づきましたランニング。特定のHerokuポート(3000ではなく)でリッスンするようにアプリに指示する必要があります。

app.listen(3000)呼び出しを変更する必要があります。app.listen(process.env.PORT || 3000);これは、アプリケーションをHerokuとあなたの両方のローカル開発ボックスで正しく実行するようにします。

+0

Whoa!申し訳ありませんが、私はこれを誤解してはっきりさせるために、私はHerokuのmlabアドオンは必要ありませんか?私はすでにmlabアカウントを持っていますが、それを同期させるためにアドオンが必要だと思っていました。私は別のpostgresqlデータベースを必要としていたので、私が持っている別のアプリと連携させる必要がありました。とにかく、ガイドから.envが端末内で別ファイルとして作られたようです........それは本当ですか、それとも私がserver.jsファイルに入力したものですか? –

+0

mlabアドオンが必要です。追加したら、その特別な環境変数があなたのアプリのために魔法のように存在し、上のペーストしたコードを使ってそのデータベースに接続することができます。あなたのサンプルコードでは、別の別のデータベースのように見えるものに接続していました。しかし、あなたはそれを代わりにmlabに接続するように表示しています=) – rdegges

+0

うわー、あなたは速いです!私は今すぐそれをテストすることに非常に興奮しています、すぐに報告するつもり、ありがとうバディ! :) –

関連する問題