ساخت فضای کار در VS Code و اجرای اولین برنامه در PowerShell
در این درس ۵ بخش
پس از نصب Node، باید یک چرخهٔ کوتاه و قابل تکرار بسازید: فایل را در پوشهٔ درست باز کنید، تغییر را ذخیره کنید، فرمان را در همان محیط اجرا کنید و خروجی را ببینید. نصب افزونههای زیاد، جای این چرخه را نمیگیرد. در این درس یک برنامهٔ کوچک بدون وابستگی خارجی اجرا میکنیم. ابزار اصلی VS Code و PowerShell است؛ انتخاب ویرایشگر دیگر هم ممکن است، به شرط آنکه نام فایل، مسیر و دستور اجرا روشن بماند. در پایان میتوانید تفاوت خطای نحو، مسیر و محیط اجرا را تشخیص دهید.
ویرایشگر رسمی و پوشهٔ شخصی پروژه
VS Code را از https://code.visualstudio.com/download بگیرید و متناسب با سیستم خود نصب کنید. برای جاوااسکریپت، پشتیبانی پایهٔ ویرایش، تکمیل کد و اشکالزدایی همراه برنامه وجود دارد؛ لازم نیست در شروع افزونهای با نام Node نصب کنید. پوشهٔ پروژه را داخل محل شخصی و قابل نوشتن بسازید، نه Program Files یا Windows. اگر از فضای همگامسازی ابری استفاده میکنید، جابهجایی یا قفلشدن فایل را در عیبیابی در نظر داشته باشید؛ مسیر کوتاه و مستقل، شروع سادهتری میدهد. برای ثبت تاریخچهٔ کد، Git for Windows در https://git-scm.com/download/win و برای بررسی درخواست API، Postman در https://www.postman.com/downloads/ معرفی میشوند؛ هر دو در این مرحله اختیاریاند. نصب آنها شرط اجرای فایل نخست یا پروژهٔ بدون وابستگی دوره نیست و شرایط استفادهٔ ابزار را باید در صفحهٔ رسمی خودش ببینید.
در PowerShell دستورهای زیر را اجرا کنید. نام پوشه عمداً فاصله دارد تا نقلقول مسیر را تمرین کنیم. اگر پوشه از قبل وجود دارد، پیام مربوط به وجود آن را بخوانید و وارد همان پوشه شوید؛ نیازی به حذف آن نیست. علامت $HOME در این مثال متغیر آمادهٔ PowerShell برای مسیر کاربر است و مقدار آن را تغییر نمیدهیم. اگر سیاست دستگاه اجازهٔ ساخت پوشه نمیدهد، محل مجاز دیگری را با هماهنگی مسئول دستگاه انتخاب کنید.
$courseDir = Join-Path $HOME 'Node Practice'
New-Item -ItemType Directory -Path $courseDir -Force | Out-Null
Set-Location -LiteralPath $courseDir
Get-Locationاکنون در VS Code از File > Open Folder همین پوشه را باز کنید. اگر فرمان code در PATH در دسترس است، code . هم همان پوشهٔ جاری را باز میکند؛ نبود این فرمان، بهتنهایی نشانهٔ خرابی Node نیست. نقطه یعنی پوشهٔ فعلی. فقط برای پوشهای که خودتان ساختهاید یا محتوایش را میشناسید، تصمیم اعتماد به workspace بگیرید. اجرای پروژهٔ ناشناس و اسکریپتهای آن، با بازکردن یک فایل متنی ساده تفاوت دارد.
فایل واقعی بسازید و آن را ذخیره کنید
در Explorer ویرایشگر، فایل hello.mjs را بسازید. پسوند mjs در این دوره، انتخاب صریح ماژول جاوااسکریپت است؛ فصل بعد دربارهٔ ماژول و package.json توضیح میدهد. پسوند واقعی باید همین باشد، نه hello.mjs.txt. نمایش پسوندها در File Explorer ویندوز به تشخیص این اشتباه کمک میکند. متن را وارد و با Ctrl+S ذخیره کنید. خروجی برنامه از نسخهٔ ذخیرهشدهٔ فایل میآید؛ وجود یک تغییر روی صفحهٔ ویرایشگر، تضمین نمیکند همان تغییر در اجرا استفاده شود.
const learner = 'Darsavand';
const completed = [true, false, true];
const count = completed.filter(value => value).length;
console.log(`Hello, ${learner}`);
console.log(`Completed: ${count}`);از منوی Terminal > New Terminal یک PowerShell باز کنید. نام پروفایل ترمینال را ببینید و با Get-Location مطمئن شوید در پوشهٔ پروژه هستید. سپس دستور زیر را اجرا کنید. خروجی مورد انتظار دو خط Hello, Darsavand و Completed: 2 است. برنامه بعد از چاپ خروجی تمام میشود و خط فرمان دوباره آمادهٔ دریافت ورودی است. برای این برنامه، نه مرورگر لازم است و نه نصب بسته؛ اجرای یک فایل محلی اولین مرحلهٔ قابل بررسی ماست.
Get-ChildItem
node .\hello.mjs
$LASTEXITCODEGet-ChildItem باید نام فایل را نشان دهد. پس از اجرای موفق، LASTEXITCODE معمولاً صفر است و عدد غیرصفر نشانهٔ پایان ناموفق برنامهٔ بومی قبلی است. این متغیر را بلافاصله پس از فرمان موردنظر بررسی کنید تا نتیجهٔ یک فرمان دیگر را اشتباه نگیرید. اگر در خود Node و محیط تعاملی REPL علامت > میبینید، دستور PowerShell را آنجا ننویسید؛ با .exit از REPL بیرون بیایید و سپس فرمان فایل را در شل اجرا کنید.
خواندن خطا؛ از اولین نشانهٔ مرتبط شروع کنید
خطای پیدانشدن فایل را با نصب مجدد درمان نکنید: ابتدا Get-Location و Get-ChildItem، نام و پسوند را بررسی کنید. اگر SyntaxError دیدید، شمارهٔ خط و علامت نزدیک آن را با کد مقایسه کنید؛ نقلقول هوشمند « » جای نقلقول معتبر کد نیست. اگر document is not defined گرفتید، احتمالاً کد مخصوص مرورگر را در Node اجرا کردهاید. اگر خروجی قدیمی است، ذخیرهشدن فایل و مسیر اجرای آن را ببینید. هر تشخیص باید به یک مشاهده متصل باشد، نه مجموعهای از تغییرهای همزمان.
در پروژهٔ سرور، برنامه معمولاً پس از چاپ نشانی باز میماند تا درخواست بگیرد؛ برنگشتن خط فرمان الزاماً هنگکردن نیست. وقتی در همان ترمینال Ctrl+C میزنید، درخواست قطع برنامه ارسال میشود. برای آزمون درخواستها، یک ترمینال دوم باز میکنیم تا ترمینال اول سرور را نگه دارد. بستن تصادفی همهٔ ترمینالها یا پایاندادن به همهٔ فرایندهای node، میتواند برنامههای دیگر را هم قطع کند؛ بهتر است هر ترمینال را با نام پروژه مشخص کنید.
تمرین و پاسخ تشریحی
یک مقدار true به completed اضافه کنید، فایل را ذخیره و دوباره اجرا کنید؛ پاسخ باید Completed: 3 باشد. سپس بدون تغییر نصب، در یک پوشهٔ دیگر node .\hello.mjs را اجرا کنید و علت خطا را توضیح دهید. پاسخ: مسیر نسبی براساس پوشهٔ کاری فرمان تفسیر میشود، نه براساس فایلی که در ویرایشگر باز است. به پوشهٔ پروژه برگردید یا مسیر درست را با نقلقول بدهید. معیار تحویل، یک فایل ذخیرهشده و گزارشی شامل دستور، مسیر کاری، دو خط خروجی و روش تشخیص خطای مسیر است.
ابزارها و منابع رسمی
دانلود VS Code: https://code.visualstudio.com/download
کار با ترمینال ویرایشگر: https://code.visualstudio.com/docs/terminal/getting-started
انتخاب پروفایل شل: https://code.visualstudio.com/docs/terminal/profiles
اجرای فایل Node: https://nodejs.org/learn/command-line/run-nodejs-scripts-from-the-command-line
متن فارسی، سناریوها و مثالها: تألیف مستقل تحریریه درسآوند.
متن درسهای عمومی را بدون ورود بخوانید.