将env连接到猫鼬时出现错误

时间:2020-09-23 09:26:06

标签: node.js express

这是在我的.env文件中

 DB_URL=mongodb://localhost:27017/ecomm

和connection.js文件是..

const mongoose=require('mongoose')
const {DB_URL}=process.env
console.log(process.env)
async function createConnection(){
    console.log("create connection")
    const connection=await mongoose.connect(DB_URL,{
        useNewUrlParser:true,useUnifiedTopology:true,useCreateIndex: true
        })
        if (connection){
            console.log("connected")
        }

}

但是我得到的错误是...。

(node:2304) UnhandledPromiseRejectionWarning: MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.

为什么我会出错? const {DB_URL} = process.env console.log({DB_URL})在控制台中未定义showm

2 个答案:

答案 0 :(得分:1)

使用 dotenv 软件包 在连接文件中

require('dotenv').config();
connectDB();
function connectDB(){
  // mongoose.set('useCreateIndex', true)
  mongoose.connect(process.env.MONGODB_URI // your uriName,
    {
     useNewUrlParser: true,
      poolSize: 20,
      keepAlive: 300000,
      reconnectTries:1000,
      reconnectInterval: 90000
    },function(err, db){
      if(err){
        console.log("Error in Connectiion to DB : ",err);
        setTimeout(()=>{
          connectDB();
        },5000)
      }else{
        return(db);
      }
    }); // database conneciton to azure pro database
  mongoose
  .connection
  .once('connected', () => console.log('Connected to database'));
}```
then use this code to connect it will also auto retry if connection fails

答案 1 :(得分:1)

在这一行上,

const {DB_URL}=process.env

您正在使用process.env对象而不是正确的变量字符串。 mongoose.connect接受字符串URL。请更正。