當我在我的本地計算機上運行它時,我沒有遇到任何問題,當我將它部署到 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!"));
“貓鼬”:“^5.13.14”,“貓鼬國際”:“^3.3.0”,“dotenv”:“^16.0.3”,
我的 .env 檔案包含 MongoDB URL 和密碼。這就是為什么我不分享。在本地也很好用。但在部署中存在問題。
uj5u.com熱心網友回復:
如果您確定您的環境變數相同,則可能與 ip 有關。嘗試在 Atlas Network Access 中添加 0.0.0.0/0 IP 地址。如果你已經有這個IP,那么洗掉并重新添加。之后重啟 Heroku 中的所有測功機。(在右上角的下拉選單中)
uj5u.com熱心網友回復:
檢查您的服務器 dotenv 值。
在云環境中,.env 檔案可能不同。
你能檢查本地 process.env 和 Heroku 的 process.env 嗎?
uj5u.com熱心網友回復:
看來你的 mongoDB URI 有錯誤現在我不知道你的 URI 是什么,它是 .env 檔案,但我可以給你一些建議
1-首先你需要用這個替換你代碼的前兩行
require('dotenv').config();
2- 在您的 .env 檔案中,您需要創建一個名為
MONGODB_URI=mongodb srv://[username:password@]host[/[database][?options]]
無論您的密碼和用戶名是什么,只需在 URI 中填寫即可
最后,您需要更改連接字串,您的檔案應如下所示
require('dotenv').config();
const app = require("./app");
mongoose
.connect(process.env.MONGODB_URI)
.then(() => {
console.log("Connection Successfull");
})
.catch((error) => {
console.log("Connection Unsuccessfull");
});
uj5u.com熱心網友回復:
我遇到了同樣的問題,這是由于在 heroku 上節點版本已更新為 19.0.0。
要找出 heroku 上正在使用哪個版本的節點,請運行heroku run 'node -e "console.log(process.versions)"'
該錯誤是由貓鼬版本引起的,也許您使用的是舊版本。
要解決這個問題,請嘗試更新到 mongoose 6.7.2,你應該沒問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/537076.html
