簡體   English   中英

我正在使用 mongoDB 圖集,但出現了 MongoServerError。 當我在沒有 .env 文件的情況下使用時,一切都很好,但是使用 env 會拋出錯誤

[英]I am using mongoDB atlas and I am getting MongoServerError. When I am using without .env file every thing is fine but with env it is throwing error

    PORT= <port>
    DB_HOST= <host>
    DB_URI= <uri>
    DB_NAME= <db>
    DB_USER= <user>
    DB_PASS= <pass>
    // app.js file
      import express from 'express';
      import mongoose from 'mongoose';
      import fetch from "node-fetch";
      import Project from './project.js';
      import dotenv from "dotenv";
      dotenv.config()
      console.log(dotenv.parsed);
      const app = express();
      mongoose
      .connect(process.env.DB_URI,{
      dbName: 'process.env.DB_NAME',
      user: 'process.env.DB_USER',
      pass: 'process.env.DB_PASS',
     })
     .then((result) => {
      console.log("Database connected successfuly!");
     })
     .catch((err) => {
       console.error(err);
     });

      app.use(express.json());
      app.use(express.urlencoded({ extended: true }));
      app.get('/project', (req, res) => {
      Project.find({}, (err, data) => {
      res.json(data);
      });
      });


       const port= process.env.PORT || 3000

       app.listen(port, () => {
       console.log('starting server at port' + port);
       })


 // Error encountered

 undefined
(node:5659) ExperimentalWarning: stream/web is an experimental feature. This feature    could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
starting server at port3000
MongoServerError: bad auth : Authentication failed.
at MessageStream.messageHandler (/home/varsha/Documents/projects/node_modules/mongodb/lib/cmap/connection.js:467:30)

請幫助如何解決此問題。 在 MessageStream.emit (node:events:390:28) at processIncomingData (/home/varsha/Documents/projects/node_modules/mongodb/lib/cmap/message_stream.js:108:16) at MessageStream._write (/ home/varsha/Documents/projects/node_modules/mongodb/lib/cmap/message_stream.js:28:9) at writeOrBuffer (node:internal/streams/writable:389:12) at _write (node:internal/streams/writable: 330:10) 在 MessageStream.Writable.write (node:internal/streams/writable:334:10) at TLSSocket.ondata (node:internal/streams/readable:754:22) at TLSSocket.emit (node:events:390) :28) at addChunk (node:internal/streams/readable:315:12) { ok: 0, code: 8000, codeName: 'AtlasError' }

這是因為您將 env var 名稱作為文字字符串傳遞,而不是支持值。

意思是,如果您更改此部分:

     dbName: 'process.env.DB_NAME',
      user: 'process.env.DB_USER',
      pass: 'process.env.DB_PASS',

對此:

     dbName: process.env.DB_NAME,
      user: process.env.DB_USER,
      pass: process.env.DB_PASS,

以及包含以下內容的.env文件:

注意: PORT是可選的,因為您可以使用.env值或 3000(例如const port = process.env.PORT || 3000

PORT=1234
DB_URI=mongo://your.uri
DB_NAME=yourdbnamegoeshere
DB_USER=dbuser
DB_PASS=dbpass 

此外,如果您將此代碼發布到公共存儲庫,請確保使用包含.env.gitignore文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM