我查了很多,但他们都帮不了我。
当我运行我的项目时,我会得到以下错误:
/home/ali/Desktop/personalitytest-backend/node_modules/mongoose/lib/connection.js:428抛出新的MongooseError(‘
openUri()的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 });发布于 2019-03-20 18:29:58
要读取.env-file,您需要安装一些将读取该文件的内容,例如dotenv包
npm install dotenv --save然后你在您的代码中要求该包
require('dotenv').config();根据dotenv文档,您应该这样做
在您的应用程序中尽早要求和配置dotenv。
接下来,您可能需要在DATABASE_URL值周围添加双引号。
DATABASE_URL="mongodb://localhost:27017/PersonalityTest"发布于 2020-12-27 10:36:55
您是否检查了您的.env变量是否可以从该index.js文件中读取?
例如,查看将其中一些内容记录到控制台时得到的信息:
console.log(process.env.DATABASE_URL);如果您得到了“未定义”,那么您可以尝试,特别是为您的.env文件提供如下绝对路径:
const path = require('path');
require('dotenv').config({ path: path.resolve(__dirname, './.env') });最近我一直在努力解决这个问题,在我的案例中,这个问题得到了解决。致以问候。
发布于 2021-06-24 14:47:01
这对我来说很有用
const dotenv = require('dotenv')
dotenv.config({path:__dirname+'/.env'});https://stackoverflow.com/questions/55267494
复制相似问题