মঙ্গোডিবি সংযোগ ত্রুটি: মঙ্গোটাইমআউট ত্রুটি: 30000 এমএসের পরে সার্ভার নির্বাচন সময় শেষ হয়েছে


11

আমি নীচের টিউটোরিয়ালটি পড়তে একটি ফুলস্ট্যাক অ্যাপ তৈরির চেষ্টা করছি:

https://medium.com/javascript-in-plain-english/full-stack-mongodb-react-node-js-express-js-in-one-simple-app-6cc8ed6de274

আমি সমস্ত পদক্ষেপ অনুসরণ করেছি এবং তারপরে চালানোর চেষ্টা করেছি:

node server.js

তবে আমি নিম্নলিখিত ত্রুটি পেয়েছি:

মঙ্গোডিবি সংযোগ ত্রুটি: মঙ্গোটাইমআউটএরআর: টাইমআউটটিতে 30000 এমএসের পরে সার্ভার নির্বাচন সময় শেষ হয়েছে onঅনটাইমআউট (সি: \ আরএনডি \ ফুলস্ট্যাক_অ্যাপ \ ব্যাকএন্ড \ নোড_মডিউলস \ মংডব \ লিব \ কোর \ স্যাম \ সার্ভার_স্লেশন.জেএস: 308: 9) তালিকাঅনোটাইমে timers.js: 531: 17) এ প্রসেসটাইমার্স (অভ্যন্তরীণ / টাইমারস.জেএস: 475: 7) {নাম: 'মঙ্গোটাইমআউটআরার', কারণ: ত্রুটি: ETIMEDOUT 99.80.11.208 पात्र7017 টিসিপি সংযোগের সাথে সংযুক্ত করুন [সংযোগ হিসাবে] সংযোগ করুন (নেট হিসাবে) net জে: 1128: 14) {নাম: 'মঙ্গো নেট ওয়ার্কআরার', [সিম্বল (মঙ্গোআররকনটেক্সট সিম্বল)]:}} [, [সিম্বল (মঙ্গোএররকনটেক্সট সিম্বল)]]:}}} (নোড: 42892) অনির্ধারিতপরিচালনের সময়কালের কাজ শেষ টাইমআউট।9) তালিকায় অন টাইমআউট (অভ্যন্তরীণ / টাইমারস.জেএস: 531: 17) প্রসেসটাইমারে (অভ্যন্তরীণ / টাইমারস.জেএস: 475: 7)

সার্ভার.জেজে আমার কোডটি নিম্নরূপ:

const mongoose = require('mongoose');
const router = express.Router();

// this is our MongoDB database
const dbRoute =
    'mongodb+srv://user:<password>@cluster0-3zrv8.mongodb.net/test?retryWrites=true&w=majority';

mongoose.Promise = global.Promise;

// connects our back end code with the database
mongoose.connect(dbRoute, 
    {   useNewUrlParser: true,
        useUnifiedTopology: true
    });

let db = mongoose.connection;

db.once('open', () => console.log('connected to the database'));

কোন পরামর্শ?


1
আপনি বদল করেছে user:passwordআপনার টু username and passwordসংযোগ স্ট্রিং?
শিবম সূদ

@ শিভামসুদ হ্যাঁ, আমি করেছি
অরবিন্দ ক্রমার

তথ্য যুক্ত করতে, আমি মঙ্গোডিবি কম্পাস সম্প্রদায়টি ব্যবহার করে সংযোগ দেওয়ার চেষ্টা করেছি কিন্তু এটি একই ত্রুটি দিয়েছে। এটি লাস মংডোব-এ কিছু সেটিংস হতে পারে?
অরবিন্দ ক্রমার

2
স্থানীয় মঙ্গোডিবি "মংডোডবি: //127.0.0.1/ ফুলস্ট্যাক" দিয়ে অ্যাপ্লিকেশনটি ভাল চলছে। অ্যাটলাস মঙ্গোডিবিতে সংযোগ দেখা যাচ্ছে বিষয়টি is
অরবিন্দ Krmar

1
আমি এটি সমাধান করতে সক্ষম। : ফায়ারওয়াল অ্যাক্সেস ব্লক করেছে, একই সঙ্গে এই পরীক্ষিত যেতে পারে portquiz.net:27017
অরবিন্দ Krmar

উত্তর:


25

কেবল মোংডব অ্যাটলাস অ্যাডমিন প্যানেলে যান security সুরক্ষা ট্যাবে যান> নেটওয়ার্ক অ্যাক্সেস> তারপরে আপনার আইপিটি যুক্ত করে শ্বেত তালিকাতে রাখুন

নির্দিষ্ট মেনুটি সনাক্ত করতে এই চিত্রটি দেখুন

দ্রষ্টব্য: গুগলে আপনার আইপি চেক করুন তারপরে এটি যুক্ত করুন


2
যে, কিন্তু ভাগ্য। বরং আমি সমস্ত আইপিগুলিকে অনুমতি দিয়েছিলাম, এখনও কাজ করে না
অরবিন্দ ক্রমার

ভাই, আপনি কি সঠিকভাবে ডিবি কনফিগারেশন সেট আপ করেছেন
kunal usapkar

আমি ডিবি অ্যাক্সেসের জন্য ভূমিকা তৈরি করেছি: ব্যবহারকারীর নাম: আরভন্ড প্রমাণীকরণ পদ্ধতি: এসসিআরএএম মঙ্গোড্রোলস: অ্যাটলাস অ্যাডমিন @ অ্যাডমিন আমাকে ক্লাস্টার বা 'ডেটা লেকে' কিছু তৈরি করতে হবে?
অরবিন্দ ক্রমার

এটি সমাধান করতে সক্ষম, সবকিছু ঠিক ছিল, তবে ফায়ারওয়াল 27017 বন্দরটিতে অ্যাক্সেস বাধা দিচ্ছিল এটি
অরবিন্দ ক্রমার

ঠিক আছে দারুণ খুশি কোডিং
কুণাল উসপ্পकर

6

আপনি যখন ব্যবহারকারী এবং পাসওয়ার্ড ক্ষেত্রগুলি প্রতিস্থাপন করবেন তখন "<" এবং ">" সরানো হয়েছে তা নিশ্চিত করুন। এটি আমার পক্ষে কাজ করেছে


3

কখনও কখনও এই ত্রুটি আইপি ঠিকানা আমাদের ডাটাবেসে অ্যাক্সেস দেওয়া কারণে ঘটে।

মনে মনে, আপনার অ্যাপ্লিকেশনটি ভালভাবে কাজ করতে পারে তবে এই জাতীয় ত্রুটিটি উপস্থিত হবে। যে কোনও সময় এটি ঘটতে পারে, বেশিরভাগ সময় আপনার আইপি ঠিকানাগুলি পরিবর্তিত হয়, যা অনুমোদিত ঠিকানাটির শ্বেত তালিকায় নেই।

আপনাকে যা করতে হবে তা হ'ল আপনার বর্তমান আইপি ঠিকানাগুলির সাথে শ্বেত তালিকাটি আপডেট করতে হবে


2

আপনার সংযোগের আইপি ঠিকানাটি হোয়াইটলিস্ট করুন। এটলাস কেবল প্রকল্পের শ্বেত তালিকাতে প্রবেশের ক্লাস্টারে ক্লায়েন্ট সংযোগের অনুমতি দেয়। প্রকল্পের শ্বেত তালিকাটি এপিআই শ্বেত তালিকা থেকে পৃথক, যা নির্দিষ্ট আইপি বা সিআইডিআর ঠিকানাগুলিতে API অ্যাক্সেসকে সীমাবদ্ধ করে।

বিঃদ্রঃ

আপনি যদি আগে থেকেই আপনার ক্লাস্টারে একটি শ্বেতলিস্ট এন্ট্রি কনফিগার করেছেন সেটআপ সংযোগ সুরক্ষা পদক্ষেপে অ্যাটলাস নির্দেশ করে তবে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন। আইপি শ্বেত তালিকাটি পরিচালনা করতে, শ্বেত তালিকায় প্রবেশ করুন দেখুন।

যদি শ্বেতলিস্টটি খালি থাকে তবে অ্যাটলাস আপনাকে প্রকল্পের শ্বেত তালিকাতে একটি আইপি ঠিকানা যুক্ত করতে অনুরোধ করবে। অপরপক্ষে তুমি:

আপনার বর্তমান আইপি ঠিকানাটিকে সাদা তালিকাবদ্ধ করতে আপনার বর্তমান আইপি ঠিকানা যুক্ত করুন ক্লিক করুন।

একটি একক আইপি ঠিকানা বা সিআইডিআর-চিহ্নিত সূত্রের রেঞ্জ যুক্ত করতে আলাদা আইপি ঠিকানা যুক্ত করুন ক্লিক করুন।

অ্যামাজন ওয়েব সার্ভিসেস (এডাব্লুএস) এ মোতায়েন করা এবং ভিপিসি পিয়ারিং ব্যবহার করে আটলাস ক্লাস্টারগুলির জন্য, আপনি পিয়ার ভিপিসির সাথে সম্পর্কিত একটি সুরক্ষা গোষ্ঠী যুক্ত করতে পারেন।

সদ্য যুক্ত হওয়া আইপি ঠিকানা বা সিআইডিআর ব্যাপ্তির জন্য আপনি একটি alচ্ছিক বিবরণ প্রদান করতে পারেন। হোয়াইটলিস্টে ঠিকানা যুক্ত করতে আইপি ঠিকানা যুক্ত করুন ক্লিক করুন।


1

আপনি {UseUnifiedTopology: সত্য} পতাকা এবং মুঙ্গুজ ডিপেন্ডেসি পুনরায় ইনস্টল করতে পারেন ! এটা আমার জন্য কাজ করে।


{UseUnifiedTopology: true} সরানো হলে এটি নিম্নলিখিত ত্রুটিটি দেয়: (নোড: 10020) অবমূল্যায়ন সতর্কতা: বর্তমান সার্ভার আবিষ্কার এবং নিরীক্ষণ ইঞ্জিনটি অবচয় করা হয়েছে, এবং ভবিষ্যতের সংস্করণে সরানো হবে। নতুন সার্ভার ডিসকভার এবং মনিটরিং ইঞ্জিনটি ব্যবহার করতে, মঙ্গোগ্লায়েন্ট কনস্ট্রাক্টরের কাছে} UseUnifiedTopology: true option বিকল্পটি পাস করুন।
অরবিন্দ ক্রমার

1

আমি একই ত্রুটি পেয়েছি। এটি সমাধানের জন্য আমি এই পদক্ষেপগুলি অনুসরণ করেছি

  1. সুরক্ষা ট্যাবে যান -> নেটওয়ার্ক অ্যাক্সেস -> তারপরে আপনার আইপি শ্বেত তালিকাভুক্ত করুন
  2. তারপরে সুরক্ষা ট্যাবে যান -> ডেটাবেস অ্যাক্সেস -> এবং আপনার বর্তমান ব্যবহারকারীকে মুছুন।
  3. নতুন ব্যবহারকারীর নাম এবং পাসওয়ার্ড সরবরাহ করে একটি নতুন ব্যবহারকারী তৈরি করুন।
  4. .Env ফাইল বা mongoose.connect পদ্ধতিতে নতুন তৈরি হওয়া ব্যবহারকারীর নাম এবং পাসওয়ার্ড সরবরাহ করুন

এই পদক্ষেপের পরে এটি যথারীতি কাজ করে। আশা করি এটি আপনাকে ছেলেরা সাহায্য করবে।


0

আপনি চেষ্টা করতে পারেন:

// Import express
let express = require('express');
// Import Body parser
let bodyParser = require('body-parser');
// Import Mongoose
let mongoose = require('mongoose');
// Initialize the app
let app = express();

// Import routes
let apiRoutes = require("./api-routes");
// Configure bodyparser to handle post requests
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());

// Connect to Mongoose and set connection variable
mongoose.connect('mongodb://XXXX:XXXX@cluster0-shard-00-00-ov74c.mongodb.net:27017,cluster0-shard-00-01-ov74c.mongodb.net:27017,cluster0-shard-00-02-ov74c.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&w=majority', {useNewUrlParser: true})
    .then(()=>console.log("DB server connect"))
    .catch(e => console.log("DB error", e));


var db = mongoose.connection;

// Added check for DB connection

if(!db)
    console.log("Error connecting db")
else
    console.log("Db connected successfully")

// Setup server port
var port = process.env.PORT || 8080;

// Send message for default URL
app.get('/', (req, res) => res.send('Hello World with Express'));

// Use Api routes in the App
app.use('/api', apiRoutes);
// Launch app to listen to specified port
app.listen(port, function () {
    console.log("Running RestHub on port " + port);
});

@ অরবিন্দকর্মার আপনি যদি মঙ্গো ওয়েবসাইটে লগইন করেন? আপনি সংস্করণটি বেছে node 3.00 or laterনিয়েছেন এবং অনুলিপি করেছেন `মংডোব + এসআরভি: // ব্যবহারকারী: <পাসওয়ার্ড> @ ক্লাস্টার 0-3zrv8.mongodb.net / পরীক্ষা? পুনরায় চেষ্টা = সত্য এবং ডাব্লু = সংখ্যাগরিষ্ঠ ''? সেখানে আপনার চয়ন করার জন্য তিনটি বিকল্প রয়েছে, মধ্য নোডটি চয়ন করুন
উম্ব্রো

আমি "আপনার অ্যাপ্লিকেশনটি সংযুক্ত করুন" নোডটি নির্বাচন করে উপরের সংযোগের স্ট্রিংটি অনুলিপি করে পাসওয়ার্ডটি প্রতিস্থাপন করেছি, তবে আমি নিশ্চিত নই যে এটির পাসওয়ার্ডটি কী হওয়া উচিত, যে পাসওয়ার্ড দিয়ে আমি অ্যাটল্ট মঙ্গোডিবিতে লগইন করেছি বা অন্য কিছু? আমি এটি চেষ্টা করার চেষ্টা করছি
অরবিন্দ ক্রমার

@ArvindKrmar আপনাকে একটি আলাদা ডাটাবেসের পাসওয়ার্ড প্রদান করা
Umbro

আমি "ডেটাবেস অ্যাক্সেস" বিভাগে দুটি ব্যবহারকারীর তৈরি করেছি এবং অনুরূপ পাসওয়ার্ডটি রেখেছি যেমনটি আমি মঙ্গোডিবিতে লগইন করতাম যাতে এটির জন্য সুরক্ষিত রাখতে বা অ্যাপ্লিকেশনটি চালিয়ে যেতে দেওয়া হয়, তবে এখন পর্যন্ত ভাগ্য নয়।
অরবিন্দ Krmar

1
কোডটি কাজ করছে যখন আমি লোকালহোস্ট "মংডোবি: //127.0.0.1/FullStack" ব্যবহার করি। সুতরাং অবশ্যই অ্যাটলাস মঙ্গোডিবির সাথে সংযোগের কিছু সমস্যা রয়েছে।
অরবিন্দ Krmar

0

আমার এই সমস্যাটি ছিল, আমার কাছে আমার আইপিটি সঠিকভাবে কনফিগার করা হয়েছে কিনা এবং এই স্ক্রিনে কনফার্ম করার আগে সমাধানটি পরীক্ষা করা হয়েছিল

এখানে চিত্র বর্ণনা লিখুন


1
আমি সমাধান খুঁজে পেয়েছি। সমস্যাটি আমার নেটওয়ার্ক সিস্টেমে ফায়ারওয়াল সেটিংসে ছিল। পোর্টকুইজ.এন.এইটিএফ 7070 পরীক্ষার জন্য ব্যবহার করা যেতে পারে যদি সংযোগটি চলছে। যদিও আমি ফায়ারওয়ালটি পরিবর্তন করি নি যা আমার শেষদিকে নেটওয়ার্ক অ্যাডমিনদের দ্বারা পরিচালিত হয় তবে ফায়ারওয়ালটি এখন এটির কাজটি সংশোধন করে। পরামর্শের জন্য সবাইকে ধন্যবাদ।
অরবিন্দ ক্রমার

0

দয়া করে আপনার পাসওয়ার্ড, ব্যবহারকারীর নাম বা আইপি কনফিগারেশন পরীক্ষা করুন । প্রায়শই "টাইমআউট এ 30000 এমএসের পরে সার্ভার নির্বাচন সময় শেষ হয়েছে _


এটি আমার শেষ দিকে ফায়ারওয়াল ইস্যু ছিল। আমি এটিকে সংশোধন করেছি এবং এখন এটির কাজ
অরবিন্দ ক্রমার

0

আমি সমস্যাটি সমাধান করতে সক্ষম হয়েছি। সবকিছু ঠিক ছিল, কিন্তু ফায়ারওয়াল পোর্ট 27017. সংযোগ পরীক্ষা করা সম্ভব এ অ্যাক্সেস ব্লক করেছে http://portquiz.net:27017/ বা শেষবিন্দু যা clusters-> মেট্রিক্স থেকে উদ্ধার করতে টেলনেট ব্যবহার করে।

ধন্যবাদ, পরামর্শের জন্য সবাই


0

ডিফল্ট প্রমাণীকরণ পদ্ধতি যা "এসসিআরএএম" এর সাহায্যে ডেটাবেস অ্যাক্সেসে নতুন ব্যবহারকারী তৈরি করার চেষ্টা করুন। তারপরে তার জন্য একটি নতুন ক্লাস্টার তৈরি করুন। এটা আমার জন্য কাজ! আমার সার্ভার.জেএস ফাইল

const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');

require('dotenv').config();

const app = express();
const port = process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

//const uri = process.env.ATLAS_URI;
mongoose.createConnection("mongodb+srv://u1:u1@cluster0-u3zl8.mongodb.net/test", { userNewParser: true, useCreateIndex: true,  useUnifiedTopology: true}
    );

const connection = mongoose.connection;
connection.once('once', () => {
    console.log(`MongoDB databse connection established successfully`);
})

app.listen(port, () => {
    console.log(`Server is running on port: ${port}`);
});

0

আপনার মঙ্গুজ সংস্করণ কি? কারণ একটি নির্দিষ্ট মঙ্গু সংস্করণে সমস্যা আছে। আরও তথ্যের জন্য দয়া করে এই লিঙ্কটি দেখুন " https://github.com/Automattic/mongoose/issues/8180 "। যাইহোক, আমি একই সমস্যার মুখোমুখি হয়েছি কিন্তু একটি পুরানো সংস্করণ (5.5.2) ব্যবহার করার পরে, এটি আমার পক্ষে কাজ করেছিল। দয়া করে একবার চেষ্টা করুন এবং আমাকে কী ঘটেছে তা জানান।


আমি একই ইস্যুতে চলছিলাম, তবে আমি প্রায়শই আমার ভিপিএন টগল করা এবং বন্ধ করে বিকাশ করি। আমার ভিপিএন আবার চালু করে, আমি ডিবিতে সংযোগ করতে সক্ষম হয়েছি। আমি আশা করছি এই সমস্যাটি অস্থায়ী, কারণ আমি সবসময় আমার ভিপিএন চালু করতে পারি না।
মাইক কে

0

এটি মূলত কোনও এনপিএম আপডেটের কারণে হতে পারে। আমি সবেমাত্র এনএমপি ভি 6.13.7 এ আপডেট করেছি। এবং আমি যে ত্রুটি পেতে শুরু।

@ ম্যাথিউসের নির্দেশাবলী অনুসরণ করে, আমি "{UseUnifiedTopology: true}" লাইনটি মন্তব্য করেছি এবং আমি এটির মাধ্যমে সক্ষম হয়েছি।

আমি মঙ্গুজ আপডেট করেছি এবং সবকিছু ঠিকঠাক কাজ করে।


0

আপনি কি কোনও অ্যান্টিভাইরাস, ফায়ারওয়াল, ভিপিএন বা সীমাবদ্ধ নেটওয়ার্কে ব্যবহার করছেন (যেমন ওয়ার্ক / বাণিজ্যিক ওয়াই-ফাই / ল্যান সংযোগ)? তারপরে এটি বন্ধ করার / অন্য কোনও নেটওয়ার্কে পুনরায় সংযোগ করার চেষ্টা করুন। কিছু আইপি / সংযোগ এমন কোনও নেটওয়ার্কের প্রশাসক দ্বারা অবরুদ্ধ করা যেতে পারে যা আপনি ব্যবহার করছেন বা কেবল অ্যান্টিভাইরাসটিতে ফায়ারওয়াল নীতি থাকতে পারে। এমনকি আপনি যদি আছে যদি যদিও 0.0.0.0আপনার IP AddressMongoDB অ্যাটলাস করেন।


0

আমারও একই প্রশ্ন ছিল. আমি মোঙ্গলোডিবি কম্পাস বা আমার নোড অ্যাপ্লিকেশন থেকে সংযোগ স্ট্রিংস এ্যাটলাস আমাকে দিয়ে সংযোগ করতে পারত। আমি এটি আটলাসের শ্বেত তালিকাতে আমার আইপি ঠিকানা যুক্ত করে সমাধান করেছি।


0

এই সমস্যাটির মধ্য দিয়ে এখনও যে কেউ লড়াই করছেন To আমি এই সমস্যাটি মিঙ্গু অপশনগুলিতে নিজেই ব্যবহারকারীর নাম, পাসওয়ার্ড এবং dbName মত সমস্ত পরামিতি সেট করে সমাধান করেছি।

আগে কোডটি এরকম ছিল। (যখন আমি ত্রুটি পেয়েছিলাম)।

import mongoose from "mongoose";
mongoose.Promise = require("bluebird");

let dbName = process.env.DB_NAME;
const dbAddress = process.env.DB_HOST;
const dbPort = process.env.DB_PORT;
if(!dbName || !dbAddress || !dbPort){
    throw new Error("Mongo error unable to configuredatabase");
}

let options = {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    user:process.env.DB_USER,
    pass: process.env.DB_PASS
};

mongoose.connect(`mongodb://${dbAddress}:${dbPort}/${dbName}`, options).catch(err => {
    if (err.message.indexOf("ECONNREFUSED") !== -1) {
        console.error("Error: The server was not able to reach MongoDB. Maybe it's not running?");
        process.exit(1);
    } else {
        throw err;
    }
});

মঙ্গো সংযোগে থাকা url নোট করুন। mongodb://${dbAddress}:${dbPort}/${dbName}

ত্রুটি ছাড়াই নতুন কোড।

import mongoose from "mongoose";
mongoose.Promise = require("bluebird");

let dbName = process.env.DB_NAME;
const dbAddress = process.env.DB_HOST;
const dbPort = process.env.DB_PORT;
// console.log("process.env", process.env)
if(!dbName || !dbAddress || !dbPort){
    throw new Error("Mongo error unable to configuredatabase");
}

let options = {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    user:process.env.DB_USER,
    pass: process.env.DB_PASS,
    dbName: dbName
};

mongoose.connect(`mongodb://${dbAddress}:${dbPort}`, options).catch(err => {
    if (err.message.indexOf("ECONNREFUSED") !== -1) {
        console.error("Error: The server was not able to reach MongoDB. Maybe it's not running?");
        process.exit(1);
    } else {
        throw err;
    }
});

বিকল্পগুলি এবং url নোট করুন।

এটি আমার স্থানীয় vর্ষা। উত্পাদন নয় Not

আশা করি এটি সহায়ক হবে।


0

নোড ড্রাইভার, ক্লাস্টারে 2,2,12 সংস্করণ -> সংযুক্ত -> আপনার অ্যাপ্লিকেশনটি সংযুক্ত করার চেষ্টা করুন। নতুন স্ট্রিং অবশ্যই মঙ্গডব: // এর সাথে থাকতে হবে। সংযোগ করতে এই স্ট্রিংটি ব্যবহার করুন। একটি পাসওয়ার্ড লিখতে ভুলবেন না

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.