تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ حسین ناظری
ارسال دیتا از طریق HTML Form و سیو با استفاده از ماژول fs
جامعه نود جی اس ایجاد شده در ۰۳ فروردین ۱۴۰۳

سلام من الان یه یه هفته ای است درگیر یه مسله خیلی ضایع ای شده که هر چقدر هم گشتم پیدا نکردم،

خیلی خیلی ممنون می‌شم که راهنمایی کنید

سوال من این است که یه پروژه داریم که یکی از صفحاتش قرار است یه اطلاعاتی رو از کاربر بگیره 
فرم  رو من طراحی کردم و تمام ولیدیشنهاش هم داره کار می‌کنه مثل بنز 

ما اومدیم از نود جی اس برای سیو کردن دیتا استفاده  کنیم . یه فایل 

index.js 

 روی روت اصلی درست کردیم ولی نمی‌دونم چطور ارتباطش بدهم با فایل جی اسی که کارهای ولیدیشنی رو انجام می‌ده

کلا گیج شدم

کاشکی مثالی که استاد داره روش کار می‌کرد، صفحاتش هم درست می‌کرد با منو و کامل 

با پست من کار نمی‌کرد.

واقعا بیش از 10 بار این فیلم و دیگر فیلم‌های یوتوب رو دیدم ولی نفهمیدم که چکار باید بکنم

خیلی ممنون می‌شم که راهنمایی کنید.

Uncaught TypeError: Failed to resolve module specifier "fs/promises". Relative references must start with either "/", "./", or "../".

خطایی که در فایل جی اس من می‌ده به ماژول اف اس گیر می‌ده 

 

 

 

سلام،

به نظر می‌رسد شما با دو موضوع اصلی درگیر هستید:

1. ارسال داده‌ها از یک فرم HTML به سرور Node.js
2. ذخیره‌سازی این داده‌ها در فایل با استفاده از ماژول fs در Node.js.
ابتدا، توضیح می‌دهم که خطای Uncaught TypeError: Failed to resolve module specifier "fs/promises" معمولاً زمانی رخ می‌دهد که شما سعی دارید ماژول‌های Node.js را در محیط مرورگر استفاده کنید، که این امکان‌پذیر نیست. ماژول fs فقط در محیط Node.js قابل استفاده است و نمی‌توان آن را در فایل‌های JavaScript که به صورت مستقیم در مرورگر اجرا می‌شوند، به کار برد. اگر نحوه دیگری استفاده کرده اید و این خطا رو داده، کدتون رو باید بررسی کرد برای علت خطا.

قدم اول: ایجاد فرم HTML
فرض می‌کنیم فرم شما در حال حاضر آماده است و مشکلی از این بابت ندارید.

قدم دوم: ارسال داده‌ها به سرور
برای ارسال داده‌ها از فرم به سرور، شما باید در فرم خود action و method را تنظیم کنید. action آدرسی است که داده‌ها به آن ارسال می‌شوند و method روش ارسال (معمولاً POST) است.


  ارسال

قدم سوم: پیاده‌سازی سرور Node.js
برای دریافت داده‌ها در سرور و ذخیره‌سازی آن‌ها به فایل، شما باید سروری با استفاده از Node.js بسازید که این داده‌ها را دریافت کند.

یک فایل index.js ایجاد کنید و کد زیر را در آن قرار دهید:

const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');
const app = express();
const port = 3000;
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/data', (req, res) => {
  const data = JSON.stringify(req.body);
  fs.writeFile('data.json', data, (err) => {
    if (err) throw err;
    console.log('Data saved to file');
  });
  res.send('داده‌ها دریافت و ذخیره شدند');
});
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

در این کد، ما ابتدا چارچوب Express و ماژول‌های مورد نیاز دیگر را وارد می‌کنیم. سپس یک سرور ساده ایجاد می‌کنیم که در پورت مشخصی گوش می‌دهد. با استفاده از میدل‌ور bodyParser، ما اطمینان حاصل می‌کنیم که سرور ما می‌تواند داده‌های ارسالی از فرم HTML را به درستی پردازش کند. bodyParser.urlencoded({ extended: true }) به ما این امکان را می‌دهد که داده‌های فرم که با متد POST ارسال شده‌اند را بخوانیم.

 

روت /data با استفاده از متد post تعریف شده است. این به این معناست که وقتی داده‌هایی از فرم به این آدرس ارسال می‌شوند، تابع کالبک مربوطه اجرا می‌شود. در این تابع، ما ابتدا داده‌های دریافتی (req.body) را به یک رشته JSON تبدیل می‌کنیم. سپس از ماژول fs برای نوشتن این داده‌ها به یک فایل به نام data.json استفاده می‌کنیم. در صورت وقوع خطا هنگام نوشتن فایل، خطا را پرتاب می‌کنیم تا مشخص شود. در غیر این صورت، یک پیام در کنسول چاپ می‌کنیم که اطلاعات با موفقیت ذخیره شده‌اند.

 

در نهایت، با اجرای res.send('داده‌ها دریافت و ذخیره شدند');، یک پاسخ به مرورگر ارسال می‌شود تا به کاربر اطلاع دهیم که داده‌ها با موفقیت دریافت و ذخیره شده‌اند.

برای اجرای سرور، فایل index.js را با دستور node index.js اجرا کنید. سپس، وقتی فرم خود را پر کرده و ارسال می‌کنید، داده‌ها باید به سرور فرستاده شوند و در فایل data.json ذخیره شوند.

 

این یک نمونه ساده است و در پروژه‌ها، ممکن است نیاز به اعتبارسنجی داده‌ها در سمت سرور، مدیریت خطاهای پیچیده‌تر، و امنیت بیشتر داشته باشید که میتونید از ماژول‌هایی مانند express-validator برای اعتبارسنجی ورودی‌ها و helmet برای افزایش امنیت اپلیکیشن استفاده کنید.

محسن موحد ۰۴ فروردین ۱۴۰۳، ۰۵:۴۳

در قدم دوم: ارسال داده‌ها به سرور یک فرم html ساده اومده که اتریبیوت هاش به شکل زیره:

form action="http://localhost:3000/data" method="POST"
محسن موحد ۰۴ فروردین ۱۴۰۳، ۰۵:۵۶