mongodb Node.Js MongoParseError URI格式错误,无法解析

k4ymrczo  于 2022-11-22  发布在  Go
关注(0)|答案(4)|浏览(190)

当我在我的本地计算机上运行它时,我没有遇到任何问题,当我将它部署到Heroku时,我遇到了这个错误。我不完全理解原因。

MongoParseError URI malformed, cannot be parsed

我刚刚在Heroku上得到这个。另外,我在server.js端的文件如下所示。

const dotenv = require("dotenv");
dotenv.config({ path: "./.env" });
const app = require("./app");


const DB = process.env.DATABASE.replace(
  "<PASSWORD>",
  process.env.DATABASE_PASSWORD
);

console.log(DB);

mongoose
  .connect(DB, {
    auth: {
      user: process.env.MONGO_DB_USER,
      password: process.env.MONGO_DB_PASSWORD,
    },
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,
  })
  .then(() => console.log("DB connection successful!"));

“ Mongoose ”:“^5.13.14”,“ Mongoose -国际”:“^3.3.0”,“dotenv”:“^16.0.3”,
我的.env文件有MongoDB的URL和密码。这就是为什么我不共享。在本地也很好用。但是在部署上有问题。

1l5u6lss

1l5u6lss1#

我遇到了同样的问题,这是由于在heroku上,节点版本更新到了19.0.0。

  • 要查明heroku上正在使用的节点版本,请运行heroku run 'node -e“console.log(process.versions)”'*

错误是由mongoose版本引起的,也许你正在使用一个旧的。
要解决这个问题,请尝试更新到mongoose 6.7.2,这样就可以了。

lskq00tm

lskq00tm2#

如果你确定你的环境变量是相同的,它可能与ip有关。尝试0.0.0.0/0在Atlas Network Access中添加www.example.com IP地址。如果你已经有了这个IP地址,那么删除并重新添加。然后重新启动Heroku中的所有dynos。(在右上角的下拉菜单中)

j5fpnvbx

j5fpnvbx3#

请检查服务器的dotenv值。
在云环境中,.env文件可能不同。
是否可以检查本地processs.env和Heroku的processs.env?

jfewjypa

jfewjypa4#

似乎有一个错误在您的mongoDB URI现在我不知道你的URI是什么是.env文件,但我可以建议你几件事
1-首先,您需要将代码的前两行替换为以下代码

require('dotenv').config();

2-在.env文件中,需要创建一个名为
MONGODB_URI=mongodb+srv://[username:password@]host[/[database][?options]]
无论您密码和用户名是什么,只需在URI中填写here
最后,您需要更改连接字符串,您的文件应如下所示

require('dotenv').config();
const app = require("./app");

mongoose
      .connect(process.env.MONGODB_URI)
      .then(() => {
        console.log("Connection Successfull");
      })
      .catch((error) => {
        console.log("Connection Unsuccessfull");
      });

相关问题