【发布时间】:2018-01-19 03:59:09
【问题描述】:
我是meanjs的新手。 我的问题是:我本地的mongodb有用户名/密码,无法成功运行meanjs demo。
我 git clone https://github.com/Azure-Samples/meanjs.git 并尝试运行它(在 Windows 10 上运行 npm),但出现此错误:
无法连接到 MongoDB! { MongoError:身份验证失败。 在 Function.MongoError.create (D:\Cordova\AzureMeanDemo\meanjs\node_modules\mongoose\node_modules\mongodb-core\lib\error.js:31:11)
然后我在meanjs\config\env\development.js 中设置用户名/密码,例如:
db: {
uri: process.env.MONGOHQ_URL || process.env.MONGODB_URI || 'mongodb://' + (process.env.DB_1_PORT_27017_TCP_ADDR || 'localhost') + '/mean-dev',
options: {
user: 'superAdmin', //here
pass: '*****' //here
},
// Enable mongoose debug mode
debug: process.env.MONGODB_DEBUG || false
},
...
但我仍然遇到同样的错误。
我在谷歌上搜索了一整天,但没有任何相关信息。
谁能帮我解决这个问题?
-------------- 解决了-------
我更改了 uri:'mongodb://username:passwd@localhost/mean-dev?authSource=admin'。它对我有用。
【问题讨论】:
-
对于本地主机只需使用
uri: 'mongodb://localhost/mean-dev'不需要选项... -
我的 MongoDB shell 版本 v3.6.1
-
@ShaishabRoy 但我使用 -auth 作为服务器运行 mongod,并且有用户名和密码。
-
然后可以试试这个
uri: 'mongodb://userName:Password@localhost/mean-dev'and 在此之前确保您已为 database 而不是 account 设置 userName 和 password用户名和密码,您的服务是否在本地运行? -
@ShaishabRoy 是的,我的 mongod 服务正在本地运行。我发现我错过了另一个警告: Db.prototype.authenticate 方法将在下一个主要版本 3.x 中不再可用,因为 MongoDB 3.6 将只允许对 admin db 中的用户进行身份验证,并且不再允许在套接字上使用多个凭据.请使用带有身份验证凭据的 MongoClient.connect 进行身份验证。 ---这是导致问题的原因吗?