`mongoose.connect()` 引发错误:第一个参数应该是字符串,已接收

Posted

技术标签:

【中文标题】`mongoose.connect()` 引发错误:第一个参数应该是字符串,已接收【英文标题】:`mongoose.connect()` fires error: first argument should be String, received 【发布时间】:2021-09-13 10:17:27 【问题描述】:

throw new MongooseError('uri 参数必须是openUri() 一个'+ ^

MongooseError:openUri()uri 参数必须是字符串, 得到“未定义”。使 sur mongoose.connect()mongoose.createConnection() 的第一个参数是一个字符串。 在 NativeConnection.Connection.openUri (C:\Users\niko\Desktop\opaa\node_modules\mongoose\nnection.js:694:11) 在 _mongoose._promiseOrCallback.cb (C:\Users\niko\Desktop\opaa\node_modules\mongoose\lib\js:351:10) 在 promiseOrCallback (C:\Users\niko\Desktop\opaa\node_modules\mongoose\lib\helpers\promislback.js:10:12) 在 Mongoose._promiseOrCallback (C:\Users\niko\Desktop\opaa\node_modules\mongoose\lib\inde at 猫鼬连接 (C:\Users\niko\Desktop\opaa\node_modules\mongoose\lib\index.js:350:20) 在对象。 (C:\Users\niko\Desktop\opaa\app.js:9:10) 在 Module._compile (internal/modules/cjs/loader.js:778:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) 在 Module.load (internal/modules/cjs/loader.js:653:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:593:12) 在 Function.Module._load (internal/modules/cjs/loader.js:585:3) 在 Function.Module.runMain (internal/modules/cjs/loader.js:831:12) 启动时(内部/bootstrap/node.js:283:19) 在 bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

const  response  = require('express');
const express = require('express');
const path = require('path');
const dotenv = require('dotenv')
const mongoose = require('mongoose');

dotenv.config();

mongoose.connect( process.env.DB_CONNECT,   useNewUrlParser: true , () =>
    console.log("connected to db");
);

const route = require('./routers/routers');
const  connect  = require('./routers/routers');

const app = express();

app.use(express.urlencoded( extended: false ));
app.use(express.json());

app.set("views", "views")
app.set("view engine", "hbs")

app.use(express.static('public'));

app.use('/user', route);

app.listen(3000, () => console.log("Server Is Runing on localhost:3000"));

【问题讨论】:

【参考方案1】:

您可以尝试确保您已通过DB_CONNECT

你可以试试DB_CONNECT=YOUR_DB_URI node index.js

另外,您可以在脚本开头使用console.log(process.env.DB_CONNECT) 进行检查。

【讨论】:

【参考方案2】:

错误消息告诉mongoose.connect接收的URL是undefined。我建议您改为 process.env.DB_CONNECT 尝试将 URL 传递给数据库以进行测试,看看是否可行。

问题在于process.env.DB_CONNECT 设置不正确,您可能需要检查dotenv 配置。

【讨论】:

以上是关于`mongoose.connect()` 引发错误:第一个参数应该是字符串,已接收的主要内容,如果未能解决你的问题,请参考以下文章

Promisifying Mongoose Connect 中的类型错误

mongoose.connect 不是一个函数 - React Native

Mongoose.connect 不工作

javascript [mongoose connect]功能连接到mongoose #mongoose

使用 mongoose.createConnection() 与 mongoose.connect() 时查询挂起

使用 mongoose.createConnection() 与 mongoose.connect() 时查询挂起