嵌套服务器未连接到 MongoDB 云 UnhandledPromiseRejectionWarning: MongoParseError: URI malformed

Posted

技术标签:

【中文标题】嵌套服务器未连接到 MongoDB 云 UnhandledPromiseRejectionWarning: MongoParseError: URI malformed【英文标题】:Nest server not connecting to MongoDB cloud UnhandledPromiseRejectionWarning: MongoParseError: URI malformed 【发布时间】:2021-10-28 11:25:28 【问题描述】:

我的 NestJS 后端需要连接到 mongodb 云,我按照 here 的文档进行操作

终端出现以下错误:

    (node:6920) UnhandledPromiseRejectionWarning: MongoParseError: URI malformed
    at new ConnectionString (D:\growth\quizbackend\quizbackend\node_modules\mongodb-connection-string-url\src\index.ts:113:13)
    at Object.parseOptions (D:\growth\quizbackend\quizbackend\node_modules\mongodb\src\connection_string.ts:249:15)
    at new MongoClient (D:\growth\quizbackend\quizbackend\node_modules\mongodb\src\mongo_client.ts:332:22)
    at D:\growth\quizbackend\quizbackend\node_modules\mongoose\lib\connection.js:785:16
    at new Promise (<anonymous>)
    at NativeConnection.Connection.openUri (D:\growth\quizbackend\quizbackend\node_modules\mongoose\lib\connection.js:782:19)
    at Mongoose.createConnection (D:\growth\quizbackend\quizbackend\node_modules\mongoose\lib\index.js:275:10)
    at Function.<anonymous> (D:\growth\quizbackend\quizbackend\node_modules\@nestjs\mongoose\dist\mongoose-core.module.js:60:63)
    at Generator.next (<anonymous>)
    at D:\growth\quizbackend\quizbackend\node_modules\@nestjs\mongoose\dist\mongoose-core.module.js:20:71
(Use `node --trace-warnings ...` to show where the warning was created)
(node:6920) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:6920) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, 
promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我的应用模块代码:

import  Module  from '@nestjs/common';
import  AppController  from './app.controller';
import  AppService  from './app.service';
import  UsersModule  from './users/users.module';
import MongooseModule from '@nestjs/mongoose'
@Module(
  imports: [UsersModule,MongooseModule.forRoot('mongodb+srv://samiurkhan:%$321@cluster0.8rxa2.mongodb.net/nest-js-db?retryWrites=true&w=majority')],
  controllers: [AppController],
  providers: [AppService],
)
export class AppModule 

我仔细检查了我的用户名和密码,但它们是正确的,是否需要对它们进行编码或者为什么错误会引发任何解释。

【问题讨论】:

我建议您从问题中删除连接字符串。任何人都可以使用它连接到您的数据库。你应该改变你的信用。 @NenadMilosavljevic 感谢您的关注,是的,一旦问题得到解决,我将更改信誉 @SamiurKhan 您是否尝试将密码更改为不带特殊字符的密码? @LarsFlieger 这个问题在我更改密码后没有任何特殊字符就解决了 @SamiurKhan 太好了。我在他们的文档中找到了该部分。在那里您可以看到允许使用的字符以及如何处理非法字符。我将其添加为每个人的答案:) 【参考方案1】:

确保 URI 连接字符串中的用户名密码没有任何非法字符

如果用户名或密码包含以下字符:

: / ? # [ ] @

这些字符必须使用百分比编码进行转换。

根据他们的文档:https://docs.mongodb.com/manual/reference/connection-string/

【讨论】:

感谢问题已解决,如何关闭问题 不客气。您无需执行任何操作,也无需关闭问题。如果您标记了答案,则它是“已关闭”

以上是关于嵌套服务器未连接到 MongoDB 云 UnhandledPromiseRejectionWarning: MongoParseError: URI malformed的主要内容,如果未能解决你的问题,请参考以下文章

docker镜像未连接到mongodb

部署到Heroku后,Localhost未连接到mongodb

Docker中的Spring Boot未连接到Docker中的Mongo

Mongoose 1.0.2 未连接到 repl.it

如何在部署在 heroku 上的解析服务器上使用云代码?

ngrok 未连接到本地服务器