Node.js blog aplikacija sa MongoDB bazom podataka.
- Node.js (v12.18.3)
- Express.js - web framework
- EJS - template engine
- MongoDB - baza podataka (MongoDB Atlas)
- Mongoose - MongoDB ODM
- Body-parser - parsiranje formi
- Lodash - utility biblioteka
Pre pokretanja projekta, potrebno je imati instalirano:
- Node.js (verzija 12.18.3 ili novija)
- npm (obično dolazi sa Node.js)
- MongoDB Atlas nalog ili lokalni MongoDB server
-
Klonirajte ili preuzmite projekat
-
Instalirajte zavisnosti:
npm install
-
Postavite environment varijable za MongoDB (SVE SU OBAVEZNE):
Opcija 1: Koristite .env fajl (preporučeno za lokalni razvoj)
Kreirajte
.envfajl u root direktorijumu projekta:# Windows type nul > .env # Linux/Mac touch .env
Zatim uredite
.envfajl i dodajte SVE potrebne MongoDB credentials:MONGODB_USERNAME=your_mongodb_username MONGODB_PASSWORD=your_mongodb_password_here MONGODB_CLUSTER=your_cluster.mongodb.net MONGODB_DATABASE=your_database_name
⚠️ VAŽNO:.envfajl je već u.gitignorei neće biti uploadovan na GitHub- SVE četiri varijable su OBAVEZNE - aplikacija neće raditi bez njih
- Za instalaciju
dotenvpaketa:npm install dotenv - Aplikacija već automatski učitava
.envfajl na početku
Opcija 2: Environment varijable direktno (za testiranje)
Windows (CMD):
set MONGODB_USERNAME=your_mongodb_username set MONGODB_PASSWORD=your_mongodb_password set MONGODB_CLUSTER=your_cluster.mongodb.net set MONGODB_DATABASE=your_database_name
Windows (PowerShell):
$env:MONGODB_USERNAME="your_mongodb_username" $env:MONGODB_PASSWORD="your_mongodb_password" $env:MONGODB_CLUSTER="your_cluster.mongodb.net" $env:MONGODB_DATABASE="your_database_name"
Linux/Mac:
export MONGODB_USERNAME=your_mongodb_username export MONGODB_PASSWORD=your_mongodb_password export MONGODB_CLUSTER=your_cluster.mongodb.net export MONGODB_DATABASE=your_database_name
Legacy support:
- Možete koristiti
PASSumestoMONGODB_PASSWORD - Ostale tri varijable su i dalje obavezne
-
Pokrenite aplikaciju:
node app.js
-
Otvorite web browser i idite na:
http://localhost:3000 -
Aplikacija će se pokrenuti na portu 3000.
Blog-with-Database-V4/
├── app.js # Glavni server fajl
├── package.json # Node.js zavisnosti i konfiguracija
├── package-lock.json # Zaključane verzije zavisnosti
├── Procfile # Konfiguracija za deployment (Heroku)
├── public/ # Statički fajlovi (CSS, JS, slike)
│ └── css/
│ └── styles.css
└── views/ # EJS template fajlovi
├── home.ejs
├── about.ejs
├── contact.ejs
├── compose.ejs
├── post.ejs
└── partials/
├── header.ejs
└── footer.ejs
- Home (
/) - Prikazuje sve blog postove - About (
/about) - Informacije o aplikaciji - Contact (
/contact) - Kontakt informacije - Compose (
/compose) - Kreiranje novog blog posta - Post (
/posts/:postId) - Prikaz pojedinačnog posta
Projekat ima Procfile koji je konfigurisan za deployment na platforme kao što je Heroku.
- MongoDB konekcija koristi environment varijable za username, password, cluster i database name
- Aplikacija koristi MongoDB Atlas cloud bazu podataka
- Server se pokreće na portu 3000
Folder node_modules/ je ekvivalent Python venv folderu. Sadrži sve instalirane Node.js pakete i zavisnosti.
Možete ga obrisati:
# Windows
rmdir /s node_modules
# Linux/Mac
rm -rf node_modulesKako ponovo instalirati:
npm installOvo će ponovo instalirati sve zavisnosti na osnovu package.json i package-lock.json fajlova.
Kada obrisati node_modules/:
- Kada želite da oslobodite prostor na disku
- Kada imate problema sa zavisnostima i želite čistu instalaciju
- Kada želite da proverite da li projekat ima sve potrebne informacije za instalaciju
package.json- definiše zavisnosti projektapackage-lock.json- zaključava tačne verzije zavisnostinode_modules/pre nego što imate backuppackage.jsonipackage-lock.json
.envfajl je u.gitignore- Vaši credentials neće biti uploadovani na GitHub- Environment varijable - Svi osetljivi podaci (password, username, cluster) su sada u environment varijablama
- Provera password-a - Aplikacija će se zaustaviti ako password nije postavljen
- Fleksibilna konfiguracija - Možete koristiti i
.envfajl i system environment varijable
Šta je promenjeno:
- Dodato
.envu.gitignoreda se ne uploaduje na GitHub - MongoDB connection string sada koristi environment va 5901 rijable umesto hardcoded vrednosti
- Dodata provera da li password postoji
- Dodata podrška za
.envfajl (opciono, ako instaliratedotenv)
Preporuka:
- Koristite
.envfajl za lokalni razvoj (ne uploadujte ga na GitHub!) - Koristite environment varijable na production serveru (Heroku, AWS, itd.)
- Nikad ne commit-ujte
.envfajl u Git
Problem: Ne mogu da se povežem sa bazom podataka
- Proverite da li je postavljena environment varijabla
MONGODB_PASSWORDiliPASS - Proverite da li je MongoDB Atlas klaster aktivan
- Proverite da li je IP adresa vašeg računara dodata u MongoDB Atlas whitelist
- Ako koristite
.envfajl, proverite da li je instalirandotenvpaket:npm install dotenv
Problem: Port 3000 je zauzet
- Promenite port u
app.jsna liniji gde jeapp.listen(3000, ...) - Ili zaustavite drugu aplikaciju koja koristi port 3000
Problem: node_modules folder je obrisan i ne mogu da pokrenem aplikaciju
- Pokrenite
npm installda ponovo instalirate zavisnosti
Problem: "MongoDB password not provided!" ili druge environment varijable greške
- Postavite SVE obavezne environment varijable:
MONGODB_USERNAMEMONGODB_PASSWORD(iliPASSza legacy)MONGODB_CLUSTERMONGODB_DATABASE
- Ili kreirajte
.envfajl sa svim četiri varijable - Proverite da li su sve varijable postavljene pre pokretanja aplikacije