猫鼬5.0.16,获取无法读取未定义的属性“替换”

宣威·阿布拉尼亚·达皮托(SherwinAblañaDapito)

我创建了一个新的Node,Express,Mongo应用程序,但设置MongoDB时突然出现了Mongoose错误。

Server Listening to Port: 9001 
C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\auth\scram.js:130
username = username.replace('=', '=3D').replace(',', '=2C');
                   ^

TypeError:无法读取未定义的属性“替换”

 at executeScram (C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\auth\scram.js:130:24)
 at C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\auth\scram.js:299:7
 at _combinedTickCallback (internal/process/next_tick.js:73:7)
 at process._tickCallback (internal/process/next_tick.js:104:9) [nodemon] app crashed - waiting for file changes before starting...

我设置MongoDB的代码是:

const session    = require('express-session');
const mongoose   = require('mongoose');
const mongoStore = require('connect-mongo')(session);

// Local connection
let mongoConnectionLocal = { 
    'url': `mongodb://${process.env.MongoDBLocalUser}:${process.env.MongoDBLocalPassword}@127.0.0.1:27017/my-database`
};    

mongoose.connect(mongoConnectionLocal.url, {auth:{authdb:"admin"}}, err => { if(err) { console.log(err); }});

这太奇怪了,因为此代码可用于Mongoose 4.13.2及更低版本(我尝试卸载5.0.16版,然后安装4.13.2版,并且没有错误)。在实现与Mongoose的MongoDB连接方面是否有任何变化?

更新:有人说使用默认值,使用默认值会产生此错误:

 default: mongoose.connect(mongoConnectionLocal.url, err => { if(err) { console.log(err); }});

{ MongoError: Authentication failed.
at C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\connection\pool.js:598:61
at authenticateStragglers (C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\connection\pool.js:516:16)
at Connection.messageHandler (C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\connection\pool.js:552:5)
at emitMessageHandler (C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\connection\connection.js:309:10)
at Socket.<anonymous> (C:\Users\Sarwin\Desktop\Sarwin\Projects\SchoolProject\node_modules\mongoose\node_modules\mongodb-core\lib\connection\connection.js:452:17)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:551:20)
name: 'MongoError',
message: 'Authentication failed.',
ok: 0,
errmsg: 'Authentication failed.',
code: 18,
codeName: 'AuthenticationFailed' }
(node:20124) UnhandledPromiseRejectionWarning: Unhandled promise rejection 
(rejection id: 1): MongoError: Authentication failed.
宣威·阿布拉尼亚·达皮托(SherwinAblañaDapito)

通过删除连接URI中的用户名和密码已解决此问题

而不是这样建立猫鼬连接,

const session    = require('express-session');
const mongoose   = require('mongoose');
const mongoStore = require('connect-mongo')(session);

// Local connection
let mongoConnectionLocal = { 
    'url':`mongodb://${process.env.MongoDBLocalUser}:${process.env.MongoDBLocalPassword}@127.0.0.1:27017/my-database`
};    

mongoose.connect(mongoConnectionLocal.url, {auth:{authdb:"admin"}}, err => { if(err) { console.log(err); }});

创建一个选项并在那里设置数据库用户名和密码,

var options = {
  auth: {authdb: 'admin'},
  user: process.env.MongoDBLocalUser,
  pass: process.env.MongoDBLocalPassword,
}

let mongoConnectionLocal = { 
    'url': `mongodb://127.0.0.1:27017/my-database`
}; 

mongoose.connect(mongoConnectionOnline.url, options, err => { if(err) { console.log(err); }}); 

而且有效。

注意:有人在评论中说我使用了错误的凭据,但是我对旧版本和较新版本的猫鼬使用了相同的凭据,并且两者均有效。

其他人也遇到此问题。请参阅:MongoDB Auth未能在Bitnami MEAN Stack Image上找到用户名

[参考] https://github.com/Automattic/mongoose/issues/4891

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

猫鼬-无法读取未定义的属性“ push”

猫鼬:TypeError:无法读取未定义的属性“ findOne”

猫鼬模式无法读取未定义的属性“密码”

无法读取未定义的属性“值”-猫鼬5.6.0

无法读取未定义猫鼬的属性“ length”

猫鼬TypeError:无法读取未定义的属性“ googleID”

TypeError:无法读取猫鼬未定义的属性“ find”

HTML5 视频:未捕获的类型错误:无法读取未定义的属性“0”

无法读取函数(p5.js)中未定义的属性“ 0”

无法读取未定义的属性0

猫鼬模型:无法读取未定义的属性(读取“findOne”)

angularJS +猫鼬:TypeError:无法读取未定义的属性“ model”

猫鼬-推裁判-无法读取未定义的属性“推”

TypeError:无法读取节点js和猫鼬中未定义的属性'on'

带有猫鼬的打字稿:无法读取未定义的属性“ CasterConstructor”

事务中的猫鼬 findOne():未捕获的类型错误:无法读取未定义的属性“$elemMatch”

在猫鼬中创建数据时无法读取未定义的属性“推”

无法读取未定义的属性“名称”-猫鼬,表达,nodeJS,ejs

类型错误:无法读取未定义的属性“findOne”(使用猫鼬)

无法获取数据。未处理的拒绝(TypeError):无法读取未定义的属性“ 0”

无法读取未定义的属性“0”,即使数据已获取并传递给组件

React TypeError:无法读取未定义的属性“0”

TypeError:无法读取未定义的CryptoJS的属性“ 0”

无法读取未定义JSON的属性“ 0”

ReactJS-TypeError:无法读取未定义的属性“ 0”

NPM无法读取未定义的属性“ 0”

为什么我无法读取未定义的属性“ 0”?

Ionic InfiniteScroll:TypeError:无法读取未定义的属性“ 0”

无法读取未定义的属性“ 0”-JavaScript