The `uri` parameter to `openUri()` must be a string, got quot;undefinedquot;(`openUri()`的`uri`参数必须是字符串,getquot;未定义quot;)
问题描述
关于这件事我找了很多,但没有一个能帮到我。
当我运行我的项目时,我收到以下错误:
/home/ali/Desktop/personalitytest-backend/node_modules/mongoose/lib/connection.js:428 引发新的MongooseError(‘
uri
的uri
参数必须是’+ ^ MongooseError:openUri()
的uri
参数必须是字符串,得到"未定义"。确保将第一个参数设置为mongoose.connect()
或mongoose.createConnection()
是字符串。
我的index.js文件:
const express = require('express'),
app = express(),
mongoose = require('mongoose'),
rateLimit = new require('express-rate-limit')({
windowMs: 1000 * 60 * 10,
max: 500,
handler: (req, res) => {
res.json({
data: 'Your request was too much, please try again in 10 minutes later.',
status: 'error'
})
}
});
const Application = new class {
constructor() {
this.setConfig();
this.setupDB();
this.setRouters();
this.setupExpress();
}
setConfig() {
require('dotenv').config();
app.use(require('helmet')());
app.use(express.json());
}
setupDB() {
mongoose.Promise = global.Promise;
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true, useCreateIndex: true });
}
setRouters() {
app.use('/', require('./routes'));
}
setupExpress() {
app.listen(process.env.PORT, () => console.log(`Listening on port ${process.env.PORT}.`));
// app.listen(process.env.PORT, process.env.IP, () => console.log(`Listening on port ${process.env.PORT}.`));
}
}
我的.env文件:
PORT=3000
DATABASE_URL=mongodb://localhost:27017/PersonalityTest
JWT_SECRETKEY=asfdawetq312etr%!@$qe
如果我只是在mongoose.connect方法中编写数据库url,就不会有错误。
例如,这没有错误:
mongoose.connect("mongodb://localhost:27017/PersonalityTest", { useNewUrlParser: true, useCreateIndex: true });
推荐答案
要读取.env
-文件,您需要安装用于读取该文件的程序,例如dotenv
软件包
npm install dotenv --save
然后您require that package in your code
require('dotenv').config();
根据dotenv
文档,您应该这样做
在您的应用程序中,请尽早要求并配置dotenv。
接下来,您可能需要在DATABASE_URL
值两边添加双引号
DATABASE_URL="mongodb://localhost:27017/PersonalityTest"
这篇关于`openUri()`的`uri`参数必须是字符串,get";未定义";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:`openUri()`的`uri`参数必须是字符串,get";未定义";
基础教程推荐
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 响应更改 div 大小保持纵横比 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 动态更新多个选择框 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01