【问题标题】:Getting error when moving MongoDB (mongoose) uri to .env file将 MongoDB (mongoose) uri 移动到 .env 文件时出错
【发布时间】:2021-09-17 03:34:40
【问题描述】:

我正在为我的网络应用程序使用 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

我收到以下错误:

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

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

我的问题:

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

【问题讨论】:

  • 那么 process.env.PORT, process.env.DB_URL 是未定义的?似乎 .env 不起作用,它在 root 中吗?

标签: javascript node.js mongodb express mongoose


【解决方案1】:

试试这个对我有用

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

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 2016-02-27
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2020-09-01
    • 1970-01-01
    相关资源
    最近更新 更多