متغيّرات البيئة
افصل الإعدادات الحسّاسة (مفاتيح، كلمات مرور) عن الكود. استخدم ملف .env:
# .env
PORT=3000
DATABASE_URL=postgres://...
JWT_SECRET=mysecret
// npm install dotenv
import "dotenv/config";
const port = process.env.PORT;
⚠️ أضف
.envإلى.gitignoreدائمًا — لا ترفع الأسرار إلى Git أبدًا.
التطوير مقابل الإنتاج
const isProd = process.env.NODE_ENV === "production";
if (isProd) {
// تسجيل مختصر، تخزين مؤقّت، بلا تفاصيل أخطاء للمستخدم
} else {
// تسجيل مفصّل، إعادة تحميل تلقائية
}
عيّن البيئة عند التشغيل:
NODE_ENV=production node app.js
الأمان (أساسيات)
- لا تكشف تفاصيل الأخطاء للمستخدم في الإنتاج.
- تحقّق من كل المدخلات (تجنّب الحقن).
- استخدم HTTPS دائمًا.
- حدّد معدّل الطلبات (Rate Limiting) لمنع الإساءة.
- استخدم helmet لرؤوس HTTP آمنة:
import helmet from "helmet";
app.use(helmet());
- حدّث الاعتماديات وافحصها:
npm audit
npm audit fix
التكامل والنشر المستمرّ (CI/CD)
أتمتة الاختبار والنشر عند كل دفع للكود. مثال GitHub Actions:
# .github/workflows/ci.yml
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm test
خيارات النشر
| المنصّة | الأنسب لـ |
|---|---|
| Vercel / Netlify | تطبيقات وواجهات بلا خادم |
| Railway / Render | خوادم Node كاملة بسهولة |
| VPS (DigitalOcean) | تحكّم كامل |
| Docker | حاويات قابلة للنقل |
أخطاء شائعة
- رفع ملف
.envإلى Git (تسريب أسرار خطير). - كشف رسائل الأخطاء التفصيلية للمستخدمين في الإنتاج.
🎯 التالي: الأداء والتوسّع (Performance & Scaling).