我有一個 Next.js 應用程式。我對 Mongodb 有一個錯誤。我有一段時間無法解決這個問題。這就是為什么我想問你們。我希望我們能解決它。這對我來說非常重要。首先,我會給你我的 server.js 代碼,然后我會從控制臺給你錯誤訊息。
Server.js 檔案代碼:
const express = require('express')
const next = require('next')
const mongoose = require('mongoose')
require('dotenv/config')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
const port = process.env.SERVER_PORT || 3000
mongoose.connect(process.env.DATABASE,{
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log('DB connected!')
const port = process.env.PORT || 3000
app.prepare().then(()=>{
const server = express()
//ROUTES
server.use(express.json())
server.get('*', (req, res) => handle(req, res))
server.listen(port, (err) => {
if(err) throw err
console.log(`Server listen on http://127.0.0.1:${port}`)
})
})
})
.catch((err) => {
console.log('DB ERROR:', err)
})
控制臺上的錯誤訊息:
DB ERROR: 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.
at NativeConnection.Connection.openUri (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/connection.js:684:11)
at /home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/index.js:332:10
at /home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/index.js:1158:10)
at Mongoose.connect (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/index.js:331:20)
at Object.<anonymous> (/home/ubuntu/nodeApps/mywebsite-next/server.js:11:10)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
我的 env 檔案中有 Mongodb 的鏈接。也許由于這種情況導致錯誤?
DATABASE=mongodb srv://myusername:[email protected]/mydbusername?retryWrites=true&w=majority
uj5u.com熱心網友回復:
您應該將您的登錄憑據放入您的 mongodb url 代碼中,如下所示:
DATABASE=mongodb srv://admin:[email protected]/<dbusername>?retryWrites=true&w=majority
如果您已經嘗試給出 dotenv 的路徑:
require('dotenv').config({ path: 'ENV_FILENAME' });
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405574.html
標籤:
上一篇:資料庫連接問題和api呼叫
