استاد خسته نباشید
من انلاین کردم پروژمو ولی خطای 503 داد بعد دوباره اومدم فایلمو روی لوکال باز کردم و تمام چیزایی که پاک کردم را اوردم ولی خطای زیر را می ده میشه ببینید مشکل کجا می تونه باشه؟ ورژن نود را زمان انلاین تغییر دادم ایا می تواند از همان باشد؟
سلام دوست من
مشکل اینکه مشکل از Mongoose هست
چک کن ببین MongoDB نصب و در حال اجرا هست ؟
سیستم رو یکبار ریستارت کن و دوباره تست کن
استاد انگاری نصب نبود همانجوری که پیش بینی کردین(دمتون گرم که اینقدر باهوشید...) اما الان نصبشم کردم باز همین مشکل پیش اومد ممکنه براتون ایمیل کنم ببینید مشکل چیه؟ یه هفته درگیر انلاین کردنشم دیگه داره دادم در میاد:(
من نمی تونم پروژه رو دیباگ کنم چون چندین ساعت وقت من رو میگیره دوست من
خودت باید سعی کنی و با تست و لاگ گرفتن تلاش به رفع مشکل کنی تا یاد بگیری
خطای جدید چی هست ؟
اگر همون خطای قبلی هست
سیستم رو ریستارت کردی یکبار ؟ چون شاید روی port قبلی در حال اجرا هست و این هم میخواد روی همون port اجرا بشه ولی نمی تونه
اره همان خطای قبلی را می ده از دو روز پیش تا الان روی همین خطا داره جلو می ره کل کد را یک بار خط به خط بررسی کردم.
سیستم ریستارت شد ولی باز همان خطا را می ده.
کد بخش ارتباط با پایگاه داده رو اینجا قرار بده
const mongoose = require("mongoose");
const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.MONGO_URI,{
useNewUrlParser: true, // <-- no longer necessary
useUnifiedTopology: true // <-- no longer necessary
});
console.log(`Mongo DB is running ${conn.connection.host}`)
}
catch (err) {
console.log(err);
process.exit(1);
}
};
module.exports=connectDB;
const path = require("path");
const debug = require("debug")("weblog-project");
const fileUpload=require('express-fileupload');
const express = require("express");
const mongoose = require("mongoose");
const dotEnv = require("dotenv");
const morgan = require("morgan");
const {errorHandler}=require('./middlewares/errors');
const {setHeaders}=require('./middlewares/headers')
const flash = require("connect-flash");
const session = require("express-session");
const connectDB = require("./config/db");
const MongoDbStore = require('connect-mongo');
// ─── Load Config ─────────────────────────────────────────────────────────────
dotEnv.config({ path: "./config/config.env" });
//! ─── Load Config ─────────────────────────────────────────────────────────────
// ─── Database Connection ─────────────────────────────────────────────────────
connectDB();
//! ─── Database Connection ─────────────────────────────────────────────────────
const app = express();
// ─── Body Parser ─────────────────────────────────────────────────────────────
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
app.use(setHeaders)
//! ─── Body Parser ─────────────────────────────────────────────────────────────
// ─── File Upload Midlware ────────────────────────────────────────────────────
app.use(fileUpload());
//! ─── File Upload Midlware ────────────────────────────────────────────────────
// ─── Session ─────────────────────────────────────────────────────────────────
app.use(
session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
unset:"destroy",
store: MongoDbStore.create({
mongoUrl: process.env.MONGO_URI
})
})
);
//! ─── Session ─────────────────────────────────────────────────────────────────
// ─── Static Folder ───────────────────────────────────────────────────────────
app.use(express.static(path.join(__dirname, "public")));
//! ─── Static Folder ───────────────────────────────────────────────────────────
// ─── Routes ──────────────────────────────────────────────────────────────────
app.use("/", require("./routers/blog"));
app.use("/users", require("./routers/users"));
app.use("/dashboard", require("./routers/dashboard"));
//! ─── Routes ──────────────────────────────────────────────────────────────────
// ─── Error Controller ────────────────────────────────────────────────────────
app.use(errorHandler);
//! ─── Error Controller ────────────────────────────────────────────────────────
const PORT = process.env.PORT || 3000;
app.listen(PORT, () =>
console.log(
`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`
)
);
استاد در زمان ثبت نام ایمیل جدید یک ارور تو پست من می ده که می گه 10000 میلی ثانیه طول کشیده و داده ارسال نشده و این خطا هم توی ترمینالم هم زمان نشون می ده.
اگر به جای process.env.MONGO_URI مسیر رو به صورت string بدی ببین مشکل برطرف میشه ؟
اگر با نوشتن localhost بازم خطا داد تغییریش بده
mongoose.connect('mongodb://localhost:27017/test')
mongoose.connect('mongodb://127.0.0.1:27017/test')
بدون 27017 هم بنویس و تست کن
mongoose.connect('mongodb://127.0.0.1/test')
اگر بازم خطا بود
mongoose.connect('mongodb://localhost/test',{
useNewUrlParser: true,
useUnifiedTopology: true,
family: 4, <-- این رو اضافه کن
})
مشکلت هم در آنلاین کردن باید متغییرهای محیطی باشه
استااااااااااااااااد درست شد درست شد درست شد
جای لوکال هاست نوشتم 127.0.0.1 درست شددددددددددددددددددددددددددد
استاد چرا این مشکل پیش اومده بوده؟
در برخی سیستم ها به دلیل پیکربندی ها انجام شده توسط برخی برنامه ها یا سیستم عامل یا .... پیش میاد
localhost همون ۱۲۷.۰.۰.۱ هست یعنی پشت پرده تبدیل میشه به ۱۲۷.۰.۰.۱ توسط. dhcp طوری که دامنه ها پشت پرده تبدیل به یک ip میشن
موفق باشی
انصافا باهوش هستید یعنی دو خط کد دیدین فهمیدین دردش چیه. افتخارید به خدا
استاد من هم همین مشکل رو داشتم و تمامی روشاتون رو امتحان کردم ولی فرقی نکرد.
با این تفاوت که با استفاده از localhost کلا وصل نمیشد ولی با استفاده از 127.0.0.1 وصل میشه و حتی جداول رو هم ایجاد میکنه ولی بعد چند ثانیه دوباره قطع میشه . مشکل از MongoDB سیستمم نیست چون کامل با compass اجرا میشه