您收到此消息是因为调用MONGO_URI
时undefined
是mongoose.connect(process.env.MONGO_URI)
。
解决方案是尽早在应用程序中调用dotenv.config()
(请参阅dotenv documentation)。
// app.js
require("dotenv").config();
const express = require("express");
const app = express();
const mongoose = require("mongoose");
const morgan = require("morgan");
,
您可以尝试两种方法。
首先,不要使用猫鼬。您可以使用MongoDB模块。
您可以使用
require('MongoDB').client;
在.env文件中的第二个中,您是否实际将用户名和密码放入字符串中,或确保您不包含
<>
在您的代码中
,
是的,我真的想通了,以防万一有人想知道。我进入了MongoDB设置,然后进入了数据库访问,然后将当前IP地址添加到了白名单中,这似乎可以正常工作。
这可能也是我在连接代码中提供的一些有用的设置:
const options = {
useNewUrlParser: true,useUnifiedTopology: true,useCreateIndex: true,useFindAndModify: false,autoIndex: false,poolSize: 10,bufferMaxEntries: 0,connectTimeoutMS: 0,socketTimeoutMS: 0,family: 4
};
mongoose
.connect(key.MONGO_URI,options)
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
.connect方法中的“键”保存在另一个文件中,并将其导入到该文件中。
,
// Create .env file
inside .env
MONGO_URI=mongo+src://username:password@cluster0......majority
//
// Inside app.js or server.js
const dotenv = require('dotenv')
dotenv.config()
const mongoose = require('mongoose')
mongoose.connect(process.env.MONGO_URI,{
useNewUrlParser: true,useUnifiedTopology: true
});
const db = mongoose.connection
db.on('error',error => console.error(error))
db.once('open',MONGO_URI => console.log('Connected to Database'))
,
此问题已here处理。我尝试了,它奏效了。如果您将数据库名称从?retryWrites=true&w=majority
更改为其他名称,则也可以考虑删除结尾的test
。
,
检查您的代码中是否对不同的 URI 调用了两次 mongoose.connect。我就是这种情况。
,
此问题已解决:
- 将 .env 文件放在项目的根目录下。与 package.json 文件所在的目录相同。
- 如果在您部署它时出现此问题,例如在 Heroku 上。在 heroku 上,它查找在 heroku 中声明的环境变量。所以只需遵循:
- 转到您的信息中心,然后在您选择的应用中转到设置标签。
- 转到配置变量并点击显示变量。
- 只需在键值对中添加您的 .env 变量即可。
- 例如。将 MONGO_URI 放在 Key 中,将 mongodb+srv://Admin:@cluster0-3t4ed.mongodb.net/test?retryWrites=true&w=majority 放在 Value 中。
而已。您将能够部署您的应用,包括您的 .env 变量。
,
在 connect
处,传递参数的方式错误。
我认为这会奏效。
试试这个代码
connect(`${process.env.MONGO_URL}`).then => () ~~
本文链接:https://www.f2er.com/2803338.html