当我在我的本地计算机上运行它时,我没有遇到任何问题,当我将它部署到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和密码。这就是为什么我不共享。在本地也很好用。但是在部署上有问题。
4条答案
按热度按时间1l5u6lss1#
我遇到了同样的问题,这是由于在heroku上,节点版本更新到了19.0.0。
错误是由mongoose版本引起的,也许你正在使用一个旧的。
要解决这个问题,请尝试更新到mongoose 6.7.2,这样就可以了。
lskq00tm2#
如果你确定你的环境变量是相同的,它可能与ip有关。尝试0.0.0.0/0在Atlas Network Access中添加www.example.com IP地址。如果你已经有了这个IP地址,那么删除并重新添加。然后重新启动Heroku中的所有dynos。(在右上角的下拉菜单中)
j5fpnvbx3#
请检查服务器的dotenv值。
在云环境中,.env文件可能不同。
是否可以检查本地processs.env和Heroku的processs.env?
jfewjypa4#
似乎有一个错误在您的mongoDB URI现在我不知道你的URI是什么是.env文件,但我可以建议你几件事
1-首先,您需要将代码的前两行替换为以下代码
2-在.env文件中,需要创建一个名为
MONGODB_URI=mongodb+srv://[username:password@]host[/[database][?options]]
无论您密码和用户名是什么,只需在URI中填写here
最后,您需要更改连接字符串,您的文件应如下所示