【发布时间】: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