2016-05-30 8 views
0

hereというチュートリアルに従っています。しかし、私は次のエラーを取得しています:Mac:ノードJS Mongoデータベースエラー:接続が拒否されました

Unable to connect to the mongoDB server. Error: { [MongoError: connect ECONNREFUSED 127.0.0.1:27017] 
name: 'MongoError', 
message: 'connect ECONNREFUSED 127.0.0.1:27017' } 

私はコマンドを使用して検証している1を返しhereが見つかりました:

ps -ef | grep mongod | grep -v grep | wc -l | tr -d ' ' 

私も

ps -ef | grep mongod 

を実行し、次のように受けています。

0 4165 418 0 Fri12pm ttys000 0:00.03 sudo mongod 
501 6165 418 0 9:54am ttys000 0:00.00 grep mongod 
次のように私が実行しようとしています

私のjavascriptのファイルがある:私が試してみました

var fs = require('fs'); 
var http = require("https"); 
var express = require('express'); 
var app = express(); 
var path = require('path'); 
var http = require("http"); 
var url = require("url"); 
var req = require('request') 
var pem = require('pem'); 
var cors = require("cors"); 
var mongodb = require('mongodb').MongoClient; 
var url = 'mongodb://127.0.0.1:27017/Rewards'; 

// Use connect method to connect to the Server 
mongodb.connect(url, function (err, db) { 
if (err) { 
    console.log('Unable to connect to the mongoDB server. Error:', err); 
} else { 
    //HURRAY!! We are connected. :) 
    console.log('Connection established to', url); 

    // do some work here with the database. 

    //Close connection 
    db.close(); 
    } 
}); 

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.use(express.static(path.join(__dirname, '../'))); 
app.listen(process.env.PORT || 8080); 
app.options('*', cors()); 

app.all('/*', function (req, res, next) { 
    res.header("Access-Control-Allow-Origin", "http://localhost:8080"); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); 
    next(); 
}); 

app.get('/', function (req, res) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    contents = fs.readFileSync("sliderImages.json", "utf8"); 
    console.log(path.join(__dirname, '/sliderImages.json')); 
res.end(contents); 

}); 

もの:

  1. 他人
  2. 取りに27017からポート番号を変更するサービス
  3. を再起動しますアウトコードなのでベアボーンであることを確認する
  4. This links information
  5. This links information
  6. This links information

私は、これは少し難しいデバッグしようとしているノードJSとモンゴDBにかなり新しいです。私はStackOverflowのオン/オフの両方で他の関連記事から多くのことを試しましたが、なぜこのエラーが出るのか理解できないようです。

私はモンゴDBがそれらを必要と読んで、次がインストールされています:

  1. MongoDBのコア
  2. BSON
  3. ケルベロス
  4. ノード-GYP

としてだけでなく、 :

    私は私のコードおそらくこれらをよく知っている、より良い開発者は、うまくいけば私に説明できるだけでなく、この問題を抱えている同様の開発者がより良い理解を持っているの投稿期待しています
  1. マングース
  2. モンゴ
  3. ノード

正確に何が起こっているのか、なぜこの問題が発生しているのか私はソースから読みましたが、データベース接続をクローズしていない、データベースがない、実行していないmongoなどのいくつかの重要な問題のために、これが発生する可能性があるというリンクを見つけることができません。

これを修正する方法についてのご意見は大変ありがとうございます。よりよく説明された答えは、自分自身を助けるために、そしてなぜこのような問題が起こっているのか、そしてなぜこの問題が発生したのかなど、将来の開発者にも大いに感謝します。

注:他の投稿の可能性が実装されていて問題を修正しなかった場合は、重複して投票しないでください。

のmongodを入力

2016-05-31T11:18:44.936-0400 I CONTROL [initandlisten] MongoDB starting : pid=10385 port=27017 dbpath=/data/db 64-bit host=RBCs-MacBook- Pro-3.local 
2016-05-31T11:18:44.936-0400 I CONTROL [initandlisten] db version v3.2.6 
2016-05-31T11:18:44.936-0400 I CONTROL [initandlisten] git version: 05552b562c7a0b3143a729aaa0838e558dc49b25 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2h 3 May 2016 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten] allocator: system 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten] modules: none 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten] build environment: 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten]  distarch: x86_64 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten]  target_arch: x86_64 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten] options: {} 
2016-05-31T11:18:44.937-0400 I -  [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'. 
2016-05-31T11:18:44.937-0400 W -  [initandlisten] Detected unclean shutdown - /data/db/mongod.lock is not empty. 
2016-05-31T11:18:44.937-0400 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating 
2016-05-31T11:18:44.937-0400 I CONTROL [initandlisten] dbexit: rc: 100 
+0

だから、cliでmongodインスタンスを実行していて、他のcliノードindex.jsで実行している間にも接続エラーが発生しますか?あなたはmongo cliを介してmongodbインスタンスに接続し、それについて質問しましたか? – Andrei

+0

私は少し混乱して申し訳ありません。私はmongoDbが動作していると信じています。私は2つのコマンドから返されたものを投稿しました。私は 'mongo'のようなコマンドを実行しようとしていますが、オンラインで見ると「コマンドが見つかりません」というキーがあります。私はこれが役立つか分かりませんが、コマンドラインからnpmを使ってすべてをダウンロードしました – L1ghtk3ira

+0

mongoシェルで以下のコマンドを実行し、期待される結果が得られているかどうかを確認してください。 db.runCommand({ping:1}) show dbs mongo 127.0.0.1:27017/Rewards JavaScriptが正常に表示されます。私はそれを使ってmongoに接続することができます。 – notionquest

答えて

1

あなたはNPMとあなたがmongodb.com

にあなたは彼らをオフにインストールMongoDBのサービスをインストールすることができMongoDBのサービスで利用可能なMongoDBのドライバについて少し混乱していますウェブサイトは、あなたのデータのレコードを実際に保管して保存するmongodbインスタンスを作成するために使用されます。 RDBMSの背景があれば、localdb/expressdbと同じです。

NPMに似ていますが、異なるライブラリをサポートしている、brewパッケージマネージャを使用して提供するmongodbサービスをインストールします。最初に醸造してから、Mongodbのウェブサイトの指示に従ってください。http://brew.sh/というリンクがあります。

MongoDBインスタンスがインストールされ、パス変数が設定されると、任意のターミナルウィンドウを開いた後でmongodbコマンドとmongoコマンドを実行できるようになります。

そして、これはこれは、あなたがNPMからインストールMongoDBのは、あなたの対話を可能にするだけの公開API /ドライバですあなたのMongoDBサービス

brew services end mongodb 

を終了します

brew services start mongodb 

あなたのMongoDBサービスを開始しますあなたがインストールしたサービスで接続中にノードプロジェクトを実行している間は、mongodbを実行している端末を開いておく必要があります。

注: ご使用のMongoDB場合は、マングースを必要としない - マングースは、スキーマのものを強制し、はるかにかさばるでのMongoDBの上に構築された(パッケージについては、インストールしました。)。私は学ぶために別のレイヤーを追加する前にまずモンゴブをつけることをお勧めします。

+0

私はこれらの指示をすぐに守り、それがどうなるかを見ていきます。ありがとう。 – L1ghtk3ira

+0

それがうまくいくことを願って:)。 mongodbのウェブサイトにある手順のすべての手順に従ってください。ひとつのステップをスキップすると、あなたを台無しにする可能性があります。もう一つの可能​​性は[mongolab](www.mlab.com)を使うことです - それは無料でサインアップし、mongodbに使うためのリモートサンドボックスを提供します。データベースを作成し、ユーザー名/パスワードを持つユーザーを作成し、uriのリンクをコピーして、作成したユーザーにusername @ passwordを変更することを忘れないでください.-すぐに起きて、ローカルではなく遊んでみたい場合は – Andrei

+0

私はこれに固執しています:https://docs.mongodb.com/master/tutorial/install-mongodb-on-os-x/?_ga=1.88454107.1570375696.1464621977。ステップ4.私はそれに道を与えているが、それは存在しないと言います – L1ghtk3ira

関連する問題