2017-08-11 26 views
0

我正尝试使用node.js从本地主机连接到mlab数据库。这是我的网址mongodb://username:[email protected]:51651/learner;(使用正确的用户名和密码)。应用程序抛出mongoerror:身份验证失败。我尝试了https://glitch.com,使用相同的代码和网址,它工作得很好。这是我的CODE。无法连接到来自locahost的mlab数据库

var express = require('express'); 
    var app = express(); 
var mongodb = require('mongodb'); 
var dotenv = require('dotenv'); 
dotenv.load(); 
var MongoClient = mongodb.MongoClient; 

app.listen(3000); 
app.use('',function(req,res){ 
    MongoClient.connect(process.env.url, function(err,db){ 
     if(err){console.log("unable to connect to the database error: " + err);} 
     else{ 
      console.log("connection established"); 

     db.createCollection("customers",function(err,res){ 
      if(err) throw err; 
      else {console.log("db created");} 
      db.close(); 
     }) 
    } 

}) 
res.end("hello"); 
}) 

你能告诉我是什么原因引起的错误,我该如何解决它。

+0

身份验证错误确实只有一个原因,那就是您提供的凭据实际上不正确。值得注意的是,在这里你使用的是'process.env.url',这基本上意味着这个环境变量实际上根本没有设置,或者你输入的东西不正确。没有其他原因。这就是为什么我们不断删除问题。 –

+0

我将相同的env变量复制到毛刺,并且它工作正常 – Kiran

+0

我会尝试再次清除一次。 **它不能是相同的**。除了您提供了错误的证书**外,没有其他原因导致验证错误。如果这是另一个问题,这将是一个不同的错误。你没有相同的细节。检查一切并更正它。 –

回答

0

问题是,在本地环境中process.env.url正在读取包括分号在内的所有url,导致URL错误。在故障中,不知何故process.env.url阅读网址,不包括分号。因此,正如@Neil Lunn所说,认证错误的唯一原因是URL错误或证书错误。