错误:密码包含非法的未转义字符

Zam*_*ize 4 heroku mongodb

我正在尝试在 Heroku 上部署 Facebook 聊天机器人,但收到此错误:

2019-03-26T01:34:39.286607+00:00 app[web.1]: Error: Password contains an illegal unescaped character
2019-03-26T01:34:39.286618+00:00 app[web.1]: at parseConnectionString (/app/node_modules/mongodb/lib/url_parser.js:298:13)
2019-03-26T01:34:39.286620+00:00 app[web.1]: at parseHandler (/app/node_modules/mongodb/lib/url_parser.js:129:14)
2019-03-26T01:34:39.286622+00:00 app[web.1]: at module.exports (/app/node_modules/mongodb/lib/url_parser.js:25:12)
2019-03-26T01:34:39.286623+00:00 app[web.1]: at deprecated (internal/util.js:67:15)
2019-03-26T01:34:39.286625+00:00 app[web.1]: at connect (/app/node_modules/mongodb/lib/operations/mongo_client_ops.js:195:3)
2019-03-26T01:34:39.286626+00:00 app[web.1]: at connectOp (/app/node_modules/mongodb/lib/operations/mongo_client_ops.js:284:3)
2019-03-26T01:34:39.286628+00:00 app[web.1]: at executeOperation (/app/node_modules/mongodb/lib/utils.js:416:24)
2019-03-26T01:34:39.286630+00:00 app[web.1]: at MongoClient.connect (/app/node_modules/mongodb/lib/mongo_client.js:169:10)
2019-03-26T01:34:39.286631+00:00 app[web.1]: at Function.MongoClient.connect (/app/node_modules/mongodb/lib/mongo_client.js:335:22)
2019-03-26T01:34:39.286633+00:00 app[web.1]: at Timeout.connectToMongo [as _onTimeout] (/app/index.js:37:14)
Run Code Online (Sandbox Code Playgroud)

我使用了非常简单的密码,但它仍然显示相同的错误。我该如何修复它?

我暂时用它01234567890作为我的密码。当我将它放入连接字符串时,我得到类似的东西

mongodb+srv://myuser:<01234567890>@host.gcp.mongodb.net/test?retryWrites=true
Run Code Online (Sandbox Code Playgroud)

小智 13

尝试使用这种方法 -

var username = encodeURIComponent("YOUR_DATABASE_USERNAME");
var password = encodeURIComponent("YOUR_DATABASE_PASSWORD");

var connectionString = `mongodb://${username}:${password}@YOUR_CONNECTION_ENDPOINT`;

var databaseConnection = await MongoClient.connect(connectionString, {
    ssl: true,
});
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 8

连接字符串不应包含<>字符,除非它们是字符串中值的一部分(如果是,则可能需要转义)。在文档中经常会看到这些字符包围的占位符,但是当您替换占位符时,您也应该删除这些字符。

尝试将您的连接字符串更改为

mongodb+srv://myuser:01234567890@host.gcp.mongodb.net/test?retryWrites=true
Run Code Online (Sandbox Code Playgroud)

一旦您确认此方法有效,您应该立即更改您的凭据以及您可能在此处发布的任何其他真实数据库信息。

  • @TheProCoder,我相信[URL编码](https://en.wikipedia.org/wiki/Percent-encoding)它会起作用。`#` 将变成 `%23`。 (10认同)
  • 你会如何逃离这个角色?通过阅读您的答案,我刚刚发现我的错误是我的密码中有一个“#”。那么,我该如何转义“#”呢?谢谢 (4认同)