首页 > 解决方案 > 将 MongoDB (mongoose) uri 移动到 .env 文件时出错

问题描述

我正在为我的网络应用程序使用 MERN 堆栈。我的数据库部署到 MongoDB Atlas。我的代码运行良好,但是在我将所有密码和端口号移至 .env 文件之后。我收到以下错误:

这是我的代码:

const express = require("express");
const mongoose = require('mongoose');
const dotenv = require('dotenv').config();


const app = express();
const port = process.env.PORT;
const mydbURL = process.env.DB_URL;

mongoose.connect(mydbURL, {useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: true});

在 .env 文件中:

PORT = 5000

DB_URL = mongodb+srv://username:password@name-of-cluster.aezwt.mongodb.net/name-of-db?retryWrites=true&w=majority

我收到以下错误:

(节点:12580)UnhandledPromiseRejectionWarning:MongooseError:uri参数openUri()必须是字符串,得到“未定义”。确保mongoose.connect()or的第一个参数mongoose.createConnection()是一个字符串。

(节点:12580)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 ID:1)(节点:12580)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

我的问题:

上述错误的可能解决方法是什么?

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


试试这个对我有用

dotenv.config({ path: path.join(__dirname, 'your env file path') });

推荐阅读