"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
文件放在项目的根目录下。
此问题已解决:
- 将您的
.env.js
文件重命名为 .env
- 将
.env
文件放在project.Same目录的根目录下package.json
文件所在的目录。
- 如果在Heroku等部署时出现这个问题。在 heroku 上,它查找在 heroku 中声明的环境变量。所以只需关注:
- 转到您的仪表板,然后在您选择的应用程序中转到设置选项卡。
- 转到配置变量并单击显示变量。
- 只需在键和值对中添加您的
.env
变量。
- 例如。将
DB_CONNECT
放入 Key,将 mongodb+srv://USERNAME:PASSWORD@cluster0-wu2im.mongodb.net/test?retryWrites=true&w=majority
放入 Value。
而已。您将能够部署您的应用程序,包括您的 .env 变量。
我只想通过猫鼬将我的数据库连接到我的本地主机上。但是,我收到此错误:
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
文件放在项目的根目录下。
此问题已解决:
- 将您的
.env.js
文件重命名为.env
- 将
.env
文件放在project.Same目录的根目录下package.json
文件所在的目录。 - 如果在Heroku等部署时出现这个问题。在 heroku 上,它查找在 heroku 中声明的环境变量。所以只需关注:
- 转到您的仪表板,然后在您选择的应用程序中转到设置选项卡。
- 转到配置变量并单击显示变量。
- 只需在键和值对中添加您的
.env
变量。 - 例如。将
DB_CONNECT
放入 Key,将mongodb+srv://USERNAME:PASSWORD@cluster0-wu2im.mongodb.net/test?retryWrites=true&w=majority
放入 Value。 而已。您将能够部署您的应用程序,包括您的 .env 变量。