2017-08-30 113 views
0

我在使用vagrant的virtualbox中運行我的mongodb。我正嘗試使用node.js連接到主機上的數據庫,但嘗試這樣做時會出現奇怪的錯誤。這是我正在運行的代碼。在使用node.js連接到VM中的mongodb時發生錯誤

var MongoClient = require('mongodb').MongoClient; 
var url = "mongodb://localhost:6600/test"; 

MongoClient.connect(url, function(err, db){ 
    if (err){ 
    throw err; 
    } 
    console.log("Database created!"); 
    db.close(); 
}); 

這是在命令行中顯示的錯誤。

C:\Users\Morgan\Desktop\testingGrounds>node createMongoDB.js 

C:\Users\Morgan\Desktop\testingGrounds\node_modules\mongodb\lib\mongo_client.js:421 
      throw err 
     ^
[object Object] 

這是Vagrantfile的相關部分。

# Create a forwarded port mapping which allows access to a specific port 
    # within the machine from a port on the host machine. In the example below, 
    # accessing "localhost:8080" will access port 80 on the guest machine. 
    # config.vm.network "forwarded_port", guest: 80, host: 8080 
    # nginx 
    config.vm.network "forwarded_port", guest: 80, host: 6600 
    # # development site 
    config.vm.network "forwarded_port", guest: 3000, host: 6660 
    # db browser port 
    config.vm.network "forwarded_port", guest: 7474, host: 6666 
    # test port 
    config.vm.network "forwarded_port", guest: 8800, host: 6606 
+0

有可能是一個更具體的錯誤,你沒有顯示,或者你應該嘗試'console.error(err)'而不是爲了更好地看到它,如果不。但config.vm.network「forwarded_port」,guest:3000,host:6660'似乎表示你正在從端口'80'轉發到你本地的'6600',而MongoDB默認在端口'27017'上運行。所以除非你專門將它分配給端口'80'(並且你可能沒有),否則你連接到錯誤的端口,甚至基本上設置了錯誤的端口轉發。 –

回答

0

如果您使用的流浪者對本地運行的一些開發/測試,只需使用一個靜態IP將簡化你的生活。

您可以從Vagrantfile刪除所有轉發端口線替換爲:

config.vm.network :private_network, ip: "192.168.33.10" 

在虛擬機,你需要確保蒙戈被綁定到這個IP或0.0.0.0,因此可以聽所有的網絡接口,在/etc/mongod.conf文件,確保有

bind_ip=0.0.0.0 

bind_ip=192.168.33.10 

在您的節點代碼中,您需要將mongo的URL替換爲mongodb://192.168.33.10:27017/test(假設mongo正在端口27017上運行;如果你已經在你的conf文件中進行了修改,請在此對齊)

相關問題