【问题标题】:throw new MongooseError('The `uri` parameter to `openUri()` must be a ' +throw new MongooseError('openUri()` 的 `uri` 参数必须是 ' +
【发布时间】:2019-12-03 13:38:51
【问题描述】:

我找不到解决方案。请帮助.. MongooseError:openUri()uri 参数必须是字符串,得到“未定义”。确保mongoose.connect()mongoose.createConnection() 的第一个参数是字符串。

if (process.env.NODE_ENV !== 'production') {
  require('dotenv').load()
}

const express = require('express')
const app = express()
const expressLayouts = require('express-ejs-layouts')
const bodyParser = require('body-parser')
const methodOverride = require('method-override')

const indexRouter = require('./routes/index')
const authorRouter = require('./routes/authors')
const bookRouter = require('./routes/books')

app.set('view engine', 'ejs')
app.set('views', __dirname + '/views')
app.set('layout', 'layouts/layout')
app.use(expressLayouts)
app.use(methodOverride('_method'))
app.use(express.static('public'))
app.use(bodyParser.urlencoded({ limit: '10mb', extended: false }))

const mongoose = require('mongoose')
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true })
const db = mongoose.connection
db.on('error', error => console.error(error))
db.once('open', () => console.log('Connected to Mongoose'))

app.use('/', indexRouter)
app.use('/authors', authorRouter)
app.use('/books', bookRouter)

app.listen(process.env.PORT || 3000)

【问题讨论】:

  • process.env.DATABASE_URL 正在返回undefined,如果DATABASE_URL 存在并且值正确,请检查您的环境变量。
  • 你的环境变量没有加载
  • 您有.env 文件吗?您的 NODE_ENV 环境变量当前设置为什么?
  • 我解决了这个问题。这是.env 文件问题。

标签: node.js mongodb mongoose


【解决方案1】:

在您的根项目上创建 .env 文件。然后在该文件下复制粘贴这一行,即

DATABASE_URL="192.168.1.1:3000"

然后在主服务器文件上可能是 app.js 或 server.js 或某行之前的 somethingelse.js 文件,即 const mongoose = require('mongoose') 复制粘贴此行

require('dotenv').config();

然后是 console.log(process.env.DATABASE_URL)// This will return your Database URL

希望你理解这个概念。

【讨论】:

    猜你喜欢
    • 2019-10-05
    • 2021-05-22
    • 2021-03-24
    • 2023-02-11
    • 2020-03-06
    • 1970-01-01
    • 2022-11-16
    • 2019-08-11
    • 2023-03-31
    相关资源
    最近更新 更多