نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
العودة للتغريدات
مشكلةتم الحل

حل أيرور Error: data and salt arguments required عند تشفير الباسورد بمكتبة bcrypt في Node.js

K
kahraba
·١٩ يوليو ٢٠٢٦·3 مشاهدة
يا جماعة أنا بعمل مسار لتسجيل مستخدم جديد (Register) في مشروع Node.js / Express، وعلشان أأمن كلمة السر قبل ما أحفظها في قاعدة البيانات، قمت باستعمال مكتبة bcrypt.
المطلوب: تشفير الباسورد اللي جاي من الفورم بشكل غير متزامن (Async) وحفظ الـ Hash بتاعه.
المشكلة اللي مقابلاني: أول ما ببعت طلب التسجيل، السيرفر بيضرب في التيرمنال وبيطلعلي الأيرور ده والعملية بتقف تماماً:
OTHER
Error: data and salt arguments required
    at Object.hash (/app/node_modules/bcrypt/bcrypt.js:126:17)
أنا متأكد إن الباسورد مبعوث صح من الـ Frontend، ومش فاهم ليه المكتبة بتقول إن البيانات أو الـ Salt ناقصين مع إني ممررهم في الدالة! كود مسار التسجيل في السيرفر:
JavaScript
const express = require('express');
const bcrypt = require('bcrypt');
const app = express();

app.use(express.json());

app.post('/api/register', async (req, res) => {
    // السطر المشتبه فيه: احتمال الـ Destructuring يكون فيه مشكلة أو الترتيب
    const password = req.body.password; 

    try {
        // السطر اللي بيضرب ويطلع الأيرور
        const hashedPassword = await bcrypt.hash(password, 10); 
        
        // حفظ في قاعدة البيانات (خطوة افتراضية)
        // const newUser = await User.create({ password: hashedPassword });

        res.json({ message: "تم التشفير والتسجيل بنجاح!" });
    } catch (error) {
        console.error(error);
        res.status(500).json({ error: error.message });
    }
});

app.listen(3000, () => console.log('Server ready on port 3000'));
مشاكل-nodejsأخطاء-bcryptتشفير-الباسوردبرمجة-backendأخطاء-express-jsحماية-البياناتكود-javascriptحل-مشاكل-bcrypt

التعليقات (1)

الحل المعتمد
nouvil
nouvilمنذ 91 يوم
الخطأ data and salt arguments required معناه إن دالة bcrypt.hash() وصلها متغيّر قيمته undefined أو null في الخانة الأولى (مكان الباسورد). إما إنك نسيت تفعل الـ Middleware بتاع قراءة الـ JSON وهو app.use(express.json()) في أول الملف (وفي الكود فوق هو متفعل تمام). أو إن الاسم (Key) اللي مبعوت من الـ Frontend في الـ Body مش مطابق تماماً للي بتستقبله، يعني مثلاً الـ Frontend باعت pass أو UserPassword وأنت بتستقبل password، فبالتالي المتغيّر بيبقى undefined. لازم تعمل خطوتين: تأمين وتأكيد استقبال البيانات، وعمل فحص (Validation) قبل ما تباصي المتغيّر للدالة عشان السيرفر ما يقعش:
JavaScript
app.post('/api/register', async (req, res) => {
    // 1. التأكد من الاسم القادم من الـ body
    const password = req.body.password; 

    // 2. حماية الدالة بفحص قيمتها أولاً
    if (!password) {
        return res.status(400).json({ message: "حقل كلمة السر مطلوب ولم يتم إرساله!" });
    }

    try {
        // الآن الدالة آمنة تماماً لأن password مستحيل تكون undefined
        const hashedPassword = await bcrypt.hash(password, 10); 
        
        res.json({ message: "تم التشفير بنجاح" });
    } catch (error) {
        res.status(500).json({ error: error.message });
    }
});

سجّل دخولك لإضافة تعليق

تسجيل الدخول
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر