首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongooseError:` `openUri()`的`uri`参数必须为字符串

MongooseError:` `openUri()`的`uri`参数必须为字符串
EN

Stack Overflow用户
提问于 2019-05-19 04:01:33
回答 5查看 9.6K关注 0票数 5

我的代码有一个问题,我在app.js中使用了以下代码:

代码语言:javascript
复制
const mongoose = require('mongoose'); 
const dotenv = require('dotenv'); 
dotenv.config()

  mongoose.connect(process.env.MONGO_URL) 
.then(() => console.log("DB connected!"));

    mongoose.connection.on('error',function(err){   
console.log("The error is: ");
});

env.txt:

代码语言:javascript
复制
MONGO_URL=mongodb+srv://blur:blur@nodeapi-pfnvf8.mongodb.net/test?retryWrites=true
PORT:8080

出于某种原因,它给了我一个奇怪的错误:

代码语言:javascript
复制
throw new MongooseError('The `uri` parameter to `openUri()` must be a ' +
    ^ 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.
    at new MongooseError (C:\Users\razei\Desktop\Recat\project2\node_modules\mongoose\lib\error\mongooseError.js:14:11)
    at NativeConnection.Connection.openUri (C:\Users\razei\Desktop\Recat\project2\node_modules\mongoose\lib\connection.js:465:11)
    at Mongoose.connect (C:\Users\razei\Desktop\Recat\project2\node_modules\mongoose\lib\index.js:289:15)
    at Object.<anonymous> (C:\Users\razei\Desktop\Recat\project2\ap.js:9:10)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3) [nodemon] app crashed - waiting for file changes before starting...

有人能帮帮我吗?我看了几篇文章,但都没帮上忙

EN

回答 5

Stack Overflow用户

发布于 2020-06-11 21:09:05

当您没有将.env文件保存在根文件夹中时,也会发生这种情况。

票数 8
EN

Stack Overflow用户

发布于 2020-02-03 03:07:03

将您的环境文件保存为.env,而不是env.txt,并确保它也在您的根文件夹中&看看这是否有效!此外,MONGO_URI是传统的命名约定,但这无关紧要。

代码语言:javascript
复制
mongoose
    .connect(process.env.MONGO_URL, {
        useNewUrlParser: true,
        useCreateIndex: true,
        useUnifiedTopology: true
    })
    .then(() => {
        console.log('Connected to Mongo!');
    })
    .catch((err) => {
        console.error('Error connecting to Mongo', err);
    });

另外,你可以用下面的几行代码来简化上面的2条require语句,你应该尽快调用它:

代码语言:javascript
复制
require('dotenv').config();
const mongoose = require('mongoose')
票数 2
EN

Stack Overflow用户

发布于 2020-11-06 05:33:15

需要这样的dotenv。这对我很管用

代码语言:javascript
复制
require('dotenv').config();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56202427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档