"MongooseError('The `uri` parameter to `openUri()` must be a ' +" 即使变量是字符串也会出现错误

"MongooseError('The `uri` parameter to `openUri()` must be a ' +" error appears even though variable is a string

我只想通过猫鼬将我的数据库连接到我的本地主机上。但是,我收到此错误:

C:\Users\przyb\Desktop\JWT\node_modules\mongoose\lib\connection.js:520
    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.

这让我很困惑,因为传递的变量肯定是一个字符串。这是我的文件树:

JWT
|
model --- User.js
node_modules
public
routes --- .env.js, auth.js
views
index.js
package.json
package-lock.json

index.js

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

//Imported routes
const authRoute = require('./routes/auth');

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

//Middleware
app.use(express.json());

//Route Middlewares
app.use('/api/User', authRoute);

app.listen(3000, () => console.log("All good"));

.env.js

DB_CONNECT = "mongodb+srv://USERNAME:PASSWORD@cluster0-wu2im.mongodb.net/test?retryWrites=true&w=majority";

Whosebug 说我有太多关于这个问题的代码所以我不能给你看 auth.js & User.js.

此问题已解决:

  • 将文件 .env.js 重命名为 .env
  • .env 文件放在项目的根目录下。

此问题已解决:

  1. 将您的 .env.js 文件重命名为 .env
  2. .env文件放在project.Same目录的根目录下package.json文件所在的目录。
  3. 如果在Heroku等部署时出现这个问题。在 heroku 上,它查找在 heroku 中声明的环境变量。所以只需关注:
  4. 转到您的仪表板,然后在您选择的应用程序中转到设置选项卡。
  5. 转到配置变量并单击显示变量。
  6. 只需在键和值对中添加您的 .env 变量。
  7. 例如。将 DB_CONNECT 放入 Key,将 mongodb+srv://USERNAME:PASSWORD@cluster0-wu2im.mongodb.net/test?retryWrites=true&w=majority 放入 Value。 而已。您将能够部署您的应用程序,包括您的 .env 变量。