رابط خط فرمان Node.js: گزینه‌ها و مجوزها

Node.js مجموعه‌ای غنی از گزینه‌های خط فرمان ارائه می‌دهد که به توسعه‌دهندگان اجازه می‌دهد رفتار زمان اجرا را پیکربندی کنند، دیباگینگ را فعال کنند، مجوزها را مدیریت کنند و نحوهٔ اجرای اسکریپت‌ها را کنترل نمایند. این گزینه‌ها برای استقرار امن و انعطاف‌پذیر برنامه‌ها حیاتی هستند.

node CLI optionsprogram entry pointpermission model

~13 دقیقه مطالعه · آخرین به‌روزرسانی ۲ دی ۱۴۰۴

1. مقدمه


رابط خط فرمان Node.js ابزارهای دیباگ داخلی، روش‌های مختلف اجرای اسکریپت و گزینه‌های پیکربندی زمان اجرا را در اختیار توسعه‌دهندگان قرار می‌دهد. اجرای دستور man node در ترمینال صفحهٔ راهنمای این گزینه‌ها را نمایش می‌دهد.


2. نحو (Synopsis)


node [options] [V8 options] [ | -e "script" | -] [--] [arguments]
node inspect [ | -e "script" | :] …
node --v8-options

اجرای node بدون آرگومان محیط REPL را آغاز می‌کند.


3. نقطهٔ ورود برنامه


  • اگر مسیر مطلق نباشد، به‌صورت نسبی از دایرکتوری جاری حل می‌شود.
  • به‌طور پیش‌فرض با require() بارگذاری می‌شود، مگر شرایطی که بارگذاری با ماژول ECMAScript اجباری باشد (مانند --import، پسوندهای .mjs/.mts/.wasm یا وجود "type": "module" در package.json).

4. گزینه‌های عمومی


  • -: معادل stdin، اسکریپت از ورودی خوانده می‌شود.
  • --: پایان گزینه‌های Node.js را مشخص می‌کند و آرگومان‌های بعدی به اسکریپت منتقل می‌شوند.
  • --abort-on-uncaught-exception: به‌جای خروج، فایل core برای دیباگ تولید می‌کند.

5. گزینه‌های مدل مجوز


Node.js مدلی برای محدودسازی عملیات حساس معرفی کرده است. برای فعال‌سازی باید پرچم‌ها به‌طور صریح ارسال شوند.


  • --allow-addons: بارگذاری افزونه‌های بومی را فعال می‌کند. بدون آن، خطای ERR_DLOPEN_DISABLED رخ می‌دهد.
  • --allow-child-process: اجازهٔ ایجاد فرآیندهای فرزند را می‌دهد. بدون آن، خطای ERR_ACCESS_DENIED رخ می‌دهد.
  • --allow-fs-read: دسترسی خواندن فایل‌ها را برای مسیرهای مشخص فعال می‌کند. می‌توان چند مسیر را با چند پرچم مجزا تعیین کرد.
  • --allow-fs-write: دسترسی نوشتن فایل‌ها را برای مسیرهای مشخص فعال می‌کند. استفاده از مسیرهای جداشده با کاما منسوخ شده است.
  • --allow-inspector: اجازهٔ اتصال از طریق پروتکل inspector را می‌دهد. بدون آن، خطای ERR_ACCESS_DENIED رخ می‌دهد.

6. مثال‌ها


// مثال: اجازهٔ خواندن از همهٔ مسیرها
$ node --permission --allow-fs-read=* index.js

// مثال: اجازهٔ ایجاد فرآیند فرزند
$ node --permission --allow-child-process index.js

// مثال: فعال‌سازی inspector
$ node --permission --allow-inspector index.js

7. نکات مهم


  • گزینه‌ها می‌توانند با خط تیره یا زیرخط نوشته شوند (مثلاً --pending-deprecation معادل --pending_deprecation است).
  • گزینه‌های خط فرمان بر گزینه‌های محیطی NODE_OPTIONS اولویت دارند.
  • اگر گزینه‌ای چندبار تکرار شود، آخرین مقدار استفاده می‌شود.

نتیجه‌گیری


رابط خط فرمان Node.js ابزارهای قدرتمندی برای پیکربندی رفتار زمان اجرا و اعمال امنیت از طریق مدل مجوز فراهم می‌کند. درک و استفاده از پرچم‌هایی مانند --allow-addons، --allow-child-process و --allow-fs-read/write تضمین می‌کند که برنامه‌ها به‌صورت امن و کارآمد اجرا شوند.


1. گزینه‌های Permission Model


  • --allow-net: اجازهٔ دسترسی به شبکه. بدون آن، هر اتصال شبکه‌ای خطای ERR_ACCESS_DENIED ایجاد می‌کند.
  • --allow-wasi: اجازهٔ ایجاد نمونه‌های WASI. بدون آن، خطای ERR_ACCESS_DENIED رخ می‌دهد.
  • --allow-worker: اجازهٔ ایجاد Worker Threads. بدون آن، خطای ERR_ACCESS_DENIED رخ می‌دهد.

2. Snapshot Options


  • --build-snapshot: ایجاد Snapshot از وضعیت برنامه و ذخیرهٔ آن در فایل blob.
  • --build-snapshot-config: استفاده از فایل JSON برای پیکربندی رفتار ساخت Snapshot (مانند builder یا withoutCodeCache).

3. بررسی و تکمیل


  • -c, --check: بررسی نحوی اسکریپت بدون اجرا.
  • --completion-bash: تولید اسکریپت تکمیل خودکار برای Bash.
  • -C condition, --conditions=condition: تعریف شرایط سفارشی برای exports resolution.

4. CPU Profiling


  • --cpu-prof: فعال‌سازی پروفایل‌گیری CPU و ذخیرهٔ خروجی در فایل.
  • --cpu-prof-dir: تعیین مسیر ذخیرهٔ پروفایل‌ها.
  • --cpu-prof-interval: تعیین بازهٔ نمونه‌گیری (به میکروثانیه).
  • --cpu-prof-name: تعیین نام فایل پروفایل.

5. گزینه‌های تشخیصی و امنیتی


  • --diagnostic-dir: مسیر پیش‌فرض برای خروجی‌های تشخیصی.
  • --disable-proto=mode: غیرفعال‌سازی ویژگی Object.prototype.__proto__ (حذف یا پرتاب خطا).
  • --disable-sigusr1: غیرفعال‌سازی شروع دیباگ با سیگنال SIGUSR1.
  • --disable-warning=code-or-type: غیرفعال‌سازی هشدارهای خاص بر اساس کد یا نوع (مانند DeprecationWarning یا ExperimentalWarning).

6. مثال‌ها


// اجازهٔ دسترسی به شبکه
$ node --permission --allow-net index.js

// ساخت Snapshot
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js

// پروفایل‌گیری CPU
$ node --cpu-prof --cpu-prof-name 'CPU.${pid}.cpuprofile' index.js

// غیرفعال‌سازی هشدار خاص
$ node --disable-warning=DEP0025 index.js

نتیجه‌گیری


گزینه‌های پیشرفتهٔ CLI در Node.js ابزارهای قدرتمندی برای مدیریت امنیت، کارایی و دیباگ فراهم می‌کنند. استفادهٔ صحیح از پرچم‌هایی مانند --allow-net، --build-snapshot و --cpu-prof به توسعه‌دهندگان کمک می‌کند برنامه‌های مقیاس‌پذیر و امن بسازند.


1. WebAssembly Options


  • --disable-wasm-trap-handler: غیرفعال‌سازی بهینه‌سازی trap-handler برای WebAssembly. این کار اجازهٔ اجرای WebAssembly را در سیستم‌هایی با فضای آدرس محدود می‌دهد، هرچند با کارایی کمتر.

2. Code Generation Restrictions


  • --disallow-code-generation-from-strings: باعث می‌شود ویژگی‌هایی مانند eval و new Function که کد را از رشته تولید می‌کنند، استثنا پرتاب کنند. این گزینه امنیت را افزایش می‌دهد.

3. DNS Options


  • --dns-result-order: تعیین ترتیب پیش‌فرض در dns.lookup() و dnsPromises.lookup(). مقادیر مجاز: ipv4first, ipv6first, verbatim.

4. Security and Networking


  • --enable-fips: فعال‌سازی رمزنگاری سازگار با FIPS در زمان اجرا (نیازمند OpenSSL سازگار).
  • --enable-network-family-autoselection: فعال‌سازی الگوریتم انتخاب خودکار خانوادهٔ شبکه.

5. Source Maps


  • --enable-source-maps: فعال‌سازی پشتیبانی از Source Maps برای نمایش stack trace مرتبط با فایل‌های اصلی (مانند TypeScript). این گزینه می‌تواند تأخیر ایجاد کند اگر Error.stack زیاد استفاده شود.

6. Entry Point Options


  • --entry-url: تفسیر نقطهٔ ورود به‌عنوان URL به‌جای مسیر فایل. از قوانین ECMAScript module resolution پیروی می‌کند.

7. Environment File Options


  • --env-file: بارگذاری متغیرهای محیطی از فایل. اگر فایل وجود نداشته باشد خطا پرتاب می‌شود.
  • --env-file-if-exists: مشابه --env-file اما بدون خطا در صورت نبود فایل.

8. Eval Option


  • -e, --eval "script": اجرای مستقیم کد جاوااسکریپت از خط فرمان. در ویندوز باید از " برای نقل قول استفاده شود.

9. Experimental Features


  • --experimental-addon-modules: پشتیبانی آزمایشی برای import افزونه‌های .node.
  • --experimental-config-file: بارگذاری فایل پیکربندی JSON سفارشی برای تنظیمات Node.js.
  • --experimental-default-config-file: بارگذاری خودکار فایل node.config.json از دایرکتوری جاری.
  • --experimental-eventsource: فعال‌سازی API جهانی EventSource.
  • --experimental-import-meta-resolve: پشتیبانی از import.meta.resolve() با آرگومان parentURL.
  • --experimental-inspector-network-resource: پشتیبانی آزمایشی از منابع شبکه در inspector.

10. Examples


// اجرای WebAssembly بدون trap-handler
$ node --disable-wasm-trap-handler index.js

// بارگذاری متغیرهای محیطی
$ node --env-file=.env --env-file=.development.env index.js

// اجرای کد جاوااسکریپت از خط فرمان
$ node -e "console.log('Hello World')"

// فعال‌سازی Source Maps
$ node --enable-source-maps index.js

نتیجه‌گیری


گزینه‌های پیشرفتهٔ CLI در Node.js ابزارهای قدرتمندی برای مدیریت امنیت، پیکربندی و ویژگی‌های آزمایشی فراهم می‌کنند. استفادهٔ صحیح از پرچم‌هایی مانند --disable-wasm-trap-handler، --enable-source-maps و --experimental-config-file به توسعه‌دهندگان کمک می‌کند برنامه‌های امن‌تر، قابل‌دیباگ‌تر و انعطاف‌پذیرتر بسازند.


1. Experimental Loader


  • --experimental-loader=module: مشخص کردن ماژولی برای hooks سفارشی. استفاده از این پرچم توصیه نمی‌شود و ممکن است حذف شود.

2. Networking and Protocols


  • --experimental-network-inspection: پشتیبانی آزمایشی از بازرسی شبکه با Chrome DevTools.
  • --experimental-quic: فعال‌سازی پشتیبانی آزمایشی از پروتکل QUIC.

3. Module and Language Features


  • --experimental-require-module: بارگذاری گراف ماژول ES به‌صورت synchronous در require().
  • --experimental-shadow-realm: فعال‌سازی پشتیبانی از ShadowRealm.
  • --experimental-transform-types: تبدیل سینتکس مخصوص TypeScript به کد جاوااسکریپت. ضمنی --enable-source-maps.
  • --experimental-vm-modules: پشتیبانی آزمایشی از ماژول‌های ES در node:vm.
  • --experimental-wasi-unstable-preview1: پشتیبانی آزمایشی از WASI.

4. Testing Features


  • --experimental-test-coverage: تولید گزارش پوشش کد هنگام اجرای تست‌ها.
  • --experimental-test-module-mocks: فعال‌سازی mocking ماژول‌ها در تست رانر.

5. SEA and Config


  • --experimental-sea-config: تولید blob برای ساخت اپلیکیشن تک‌فایلی.

6. Inspection


  • --experimental-worker-inspection: پشتیبانی آزمایشی از بازرسی Worker با Chrome DevTools.

7. Garbage Collection


  • --expose-gc: نمایش تابع gc() از V8 برای مدیریت دستی garbage collection.

8. Security Flags


  • --force-context-aware: جلوگیری از بارگذاری افزونه‌های بومی غیر context-aware.
  • --force-fips: فعال‌سازی اجباری رمزنگاری سازگار با FIPS.
  • --force-node-api-uncaught-exceptions-policy: enforce رفتار صحیح برای uncaughtException در Node-API callbacks.
  • --frozen-intrinsics: فریز کردن اشیاء داخلی مانند Array و Object.

9. Heap Profiling


  • --heap-prof: فعال‌سازی پروفایل‌گیری heap و ذخیرهٔ خروجی در فایل.
  • --heap-prof-dir: تعیین مسیر ذخیرهٔ پروفایل‌ها.
  • --heap-prof-interval: تعیین بازهٔ نمونه‌گیری (به بایت).
  • --heap-prof-name: تعیین نام فایل پروفایل.

10. Heap Snapshots


  • --heapsnapshot-near-heap-limit=max_count: تولید snapshot زمانی که استفادهٔ heap نزدیک به محدودیت است.
  • --heapsnapshot-signal=signal: نوشتن heap dump هنگام دریافت سیگنال مشخص.

11. Help Option


  • -h, --help: نمایش گزینه‌های خط فرمان Node.js.

Examples


// فعال‌سازی پروفایل‌گیری heap
$ node --heap-prof index.js

// تولید snapshot هنگام نزدیک شدن به محدودیت heap
$ node --heapsnapshot-near-heap-limit=3 index.js

// نمایش کمک
$ node --help

نتیجه‌گیری


گزینه‌های آزمایشی و پروفایل‌گیری در Node.js ابزارهای قدرتمندی برای تست ویژگی‌های جدید، افزایش امنیت و بررسی عملکرد حافظه و CPU فراهم می‌کنند. استفادهٔ صحیح از پرچم‌هایی مانند --experimental-quic، --heap-prof و --expose-gc به توسعه‌دهندگان کمک می‌کند برنامه‌های پایدارتر و امن‌تر بسازند.


1. Module and Import Options


  • --icu-data-dir=file: مشخص کردن مسیر بارگذاری داده‌های ICU.
  • --import=module: بارگذاری ماژول‌های ES در زمان شروع. ماژول‌های --require قبل از --import اجرا می‌شوند.
  • --input-type=type: تعیین نوع ورودی برای --eval یا STDIN (commonjs, module, typescript).

2. HTTP and Parser Options


  • --insecure-http-parser: فعال‌سازی حالت lenient برای HTTP parser. استفاده از این پرچم خطرناک است و می‌تواند حملات امنیتی ایجاد کند.

3. Inspector and Debugging


  • --inspect: فعال‌سازی دیباگر V8 روی host:port.
  • --inspect-brk: فعال‌سازی دیباگر و توقف در ابتدای اجرای اسکریپت.
  • --inspect-port: تعیین host:port برای دیباگر.
  • --inspect-wait: فعال‌سازی دیباگر و انتظار برای اتصال debugger.
  • --inspect-publish-uid: تعیین نحوهٔ انتشار URL دیباگر.

4. Interactive and Execution Options


  • -i, --interactive: باز کردن REPL حتی اگر stdin ترمینال نباشد.
  • --jitless: غیرفعال‌سازی تخصیص حافظه اجرایی در زمان اجرا (امنیت بیشتر، کارایی کمتر).
  • --localstorage-file=file: تعیین فایل برای ذخیرهٔ داده‌های localStorage.

5. Memory Management


  • --max-http-header-size=size: تعیین حداکثر اندازهٔ هدرهای HTTP.
  • --max-old-space-size-percentage: تخصیص درصدی از حافظهٔ سیستم به V8 heap.

6. Security and Addons


  • --no-addons: غیرفعال‌سازی بارگذاری افزونه‌های بومی.
  • --no-deprecation: بی‌صدا کردن هشدارهای deprecation.
  • --no-warnings: بی‌صدا کردن همهٔ هشدارها.
  • --permission: فعال‌سازی Permission Model برای محدودسازی دسترسی‌ها.

7. OpenSSL Options


  • --openssl-config=file: بارگذاری فایل پیکربندی OpenSSL.
  • --openssl-legacy-provider: فعال‌سازی provider قدیمی در OpenSSL 3.0.
  • --openssl-shared-config: فعال‌سازی بخش پیکربندی پیش‌فرض OpenSSL.

8. Symlink Options


  • --preserve-symlinks: حفظ مسیر symlink هنگام بارگذاری ماژول‌ها.
  • --preserve-symlinks-main: اعمال رفتار مشابه برای ماژول اصلی.

9. Profiling and Reports


  • --prof: تولید خروجی پروفایل V8.
  • --prof-process: پردازش خروجی پروفایل V8.
  • --redirect-warnings=file: نوشتن هشدارها در فایل به‌جای stderr.
  • --report-compact: تولید گزارش در قالب JSON تک‌خطی.
  • --report-dir: تعیین مسیر ذخیرهٔ گزارش‌ها.
  • --report-exclude-env: حذف متغیرهای محیطی از گزارش تشخیصی.

Examples


// فعال‌سازی دیباگر روی پورت تصادفی
$ node --inspect=0 index.js

// بارگذاری ماژول ES در زمان شروع
$ node --import=module.js index.js

// اجرای REPL حتی بدون ترمینال
$ node -i

// بی‌صدا کردن هشدارها
$ node --no-warnings index.js

نتیجه‌گیری


گزینه‌های CLI در Node.js ابزارهای قدرتمندی برای مدیریت ماژول‌ها، دیباگ و امنیت فراهم می‌کنند. استفادهٔ صحیح از پرچم‌هایی مانند --inspect، --permission و --openssl-config به توسعه‌دهندگان کمک می‌کند برنامه‌های امن‌تر و قابل‌دیباگ‌تر بسازند.


1. Diagnostic Report Options


  • --report-exclude-network: حذف اطلاعات شبکه از گزارش تشخیصی.
  • --report-filename=filename: تعیین نام فایل گزارش (stdout یا stderr نیز قابل استفاده است).
  • --report-on-fatalerror: تولید گزارش هنگام خطاهای کشنده (مانند out-of-memory).
  • --report-on-signal: تولید گزارش هنگام دریافت سیگنال مشخص.
  • --report-signal=signal: تعیین سیگنال برای تولید گزارش (پیش‌فرض SIGUSR2).
  • --report-uncaught-exception: تولید گزارش هنگام خروج به دلیل استثنای مدیریت‌نشده.

2. Module Preloading


  • -r, --require module: بارگذاری ماژول مشخص در زمان شروع. این ماژول‌ها قبل از --import اجرا می‌شوند.

3. Run Scripts


  • --run: اجرای اسکریپت‌های تعریف‌شده در package.json. ساده‌تر و سریع‌تر از npm run اما با امکانات محدودتر.

4. Secure Heap Options


  • --secure-heap=n: ایجاد heap امن در OpenSSL برای جلوگیری از نشت داده‌های حساس.
  • --secure-heap-min=n: تعیین حداقل تخصیص از heap امن.

5. Snapshot Options


  • --snapshot-blob=path: تعیین مسیر blob برای ذخیره یا بارگذاری snapshot برنامه.

6. Test Runner Options


  • --test: اجرای تست‌ها با استفاده از test runner داخلی Node.js.
  • --test-concurrency: تعیین حداکثر تعداد فایل‌های تست همزمان.
  • --test-coverage-branches/functions/lines: تعیین حداقل درصد پوشش کد برای شاخه‌ها، توابع و خطوط.
  • --test-coverage-include / --test-coverage-exclude: مدیریت فایل‌های شامل یا حذف‌شده از گزارش پوشش کد.
  • --test-force-exit: خروج از فرآیند پس از پایان همهٔ تست‌ها.
  • --test-global-setup=module: بارگذاری ماژول برای تنظیمات سراسری قبل از اجرای تست‌ها.
  • --test-isolation=mode: تعیین نوع ایزولاسیون تست‌ها (process یا none).
  • --test-name-pattern / --test-skip-pattern: اجرای یا رد تست‌ها بر اساس الگوی نام.
  • --test-only: اجرای فقط تست‌هایی که با only مشخص شده‌اند.
  • --test-reporter / --test-reporter-destination: تعیین گزارشگر تست و مقصد آن.
  • --test-rerun-failures: اجرای مجدد تست‌های ناموفق با استفاده از فایل وضعیت.
  • --test-shard: تقسیم مجموعهٔ تست‌ها به بخش‌های مساوی و اجرای یک بخش خاص.

Examples


// تولید گزارش هنگام خطای کشنده
$ node --report-on-fatalerror index.js

// اجرای تست‌ها با ایزولاسیون فرآیندی
$ node --test --test-isolation=process

// اجرای فقط تست‌های مشخص‌شده با only
$ node --test --test-only

// اجرای اسکریپت test از package.json
$ node --run test

نتیجه‌گیری


گزینه‌های CLI در Node.js برای گزارش‌گیری تشخیصی و مدیریت تست‌ها ابزارهای قدرتمندی فراهم می‌کنند. پرچم‌هایی مانند --report-on-fatalerror، --test-coverage-lines و --secure-heap به توسعه‌دهندگان کمک می‌کنند مشکلات را بهتر تحلیل کرده و تست‌های پایدارتر و امن‌تر اجرا کنند.


1. Test Runner Options


  • --test-timeout: تعیین زمان حداکثر اجرای تست‌ها (به میلی‌ثانیه). پیش‌فرض Infinity.
  • --test-update-snapshots: بازتولید فایل‌های snapshot برای تست‌های snapshot.

2. Deprecation and Title Options


  • --throw-deprecation: پرتاب خطا هنگام استفاده از APIهای منسوخ.
  • --trace-deprecation: چاپ stack trace برای هشدارهای deprecation.
  • --title=title: تعیین عنوان فرآیند در زمان شروع.

3. TLS Options


  • --tls-cipher-list: تعیین لیست cipherهای TLS.
  • --tls-keylog=file: ذخیرهٔ کلیدهای TLS در فایل برای تحلیل ترافیک.
  • --tls-min-v1.2 / --tls-max-v1.3: تعیین نسخه‌های حداقل و حداکثر TLS.

4. Environment Variable Tracing


  • --trace-env: چاپ دسترسی‌ها به متغیرهای محیطی.
  • --trace-env-js-stack: چاپ stack trace جاوااسکریپت هنگام دسترسی.
  • --trace-env-native-stack: چاپ stack trace بومی هنگام دسترسی.

5. Trace Events


  • --trace-event-categories: تعیین دسته‌های رویداد برای ردیابی.
  • --trace-event-file-pattern: تعیین قالب فایل خروجی رویدادها.
  • --trace-events-enabled: فعال‌سازی جمع‌آوری اطلاعات رویدادها.

6. Other Trace Options


  • --trace-exit: چاپ stack trace هنگام خروج فرآیند.
  • --trace-uncaught: چاپ stack trace برای استثناهای مدیریت‌نشده.
  • --trace-warnings: چاپ stack trace برای هشدارها.
  • --trace-sync-io: چاپ stack trace هنگام شناسایی I/O همزمان.
  • --trace-tls: چاپ اطلاعات بسته‌های TLS.

7. Memory and Heap Options


  • --track-heap-objects: ردیابی تخصیص اشیاء heap برای snapshotها.
  • --unhandled-rejections=mode: تعیین رفتار هنگام رخداد promiseهای مدیریت‌نشده (throw, strict, warn, none).

8. CA and Proxy Options


  • --use-bundled-ca: استفاده از CAهای بسته‌بندی‌شده توسط Node.js.
  • --use-openssl-ca: استفاده از CAهای پیش‌فرض OpenSSL.
  • --use-system-ca: استفاده از CAهای سیستم.
  • --use-env-proxy: استفاده از متغیرهای محیطی HTTP_PROXY و HTTPS_PROXY.

9. Watch Mode Options


  • --watch: اجرای Node.js در حالت watch و ری‌استارت هنگام تغییر فایل‌ها.
  • --watch-path: تعیین مسیرهای خاص برای watch.
  • --watch-preserve-output: جلوگیری از پاک شدن خروجی کنسول هنگام ری‌استارت.
  • --watch-kill-signal: تعیین سیگنال برای پایان فرآیند هنگام ری‌استارت.

10. Environment Variables


  • NODE_OPTIONS: تعیین گزینه‌های CLI به‌صورت پیش‌فرض.
  • NODE_EXTRA_CA_CERTS: افزودن گواهی‌های CA اضافی.
  • NODE_ICU_DATA: تعیین مسیر داده‌های ICU.
  • NODE_V8_COVERAGE: فعال‌سازی خروجی پوشش کد V8.
  • NODE_REPL_HISTORY: تعیین مسیر ذخیرهٔ تاریخچهٔ REPL.
  • NODE_TLS_REJECT_UNAUTHORIZED: غیرفعال‌سازی اعتبارسنجی TLS (غیرامن).
  • UV_THREADPOOL_SIZE

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

آشنایی کامل با ماژول Cluster در Node.js و نحوه افزایش مقیاس‌پذیری سرور

ماژول Cluster در Node.js به توسعه‌دهندگان اجازه می‌دهد چندین پردازش همزمان ایجاد کنند که یک پورت سرور را به اشتراک می‌گذارند. این کار باعث استفاده بهتر از هسته‌های CPU و افزایش توان پردازش برنامه می‌شود. در این مقاله نحوه کار Cluster، مدیریت Workerها، تنظیمات مهم و مثال عملی را بررسی می‌کنیم.

ادامه

راهنمای جامع ماژول VM در Node.js (ماژول node:vm)

ماژول node:vm امکان کامپایل و اجرای کد جاوااسکریپت در کانتکست‌های ایزولهٔ V8 را فراهم می‌کند. این کانتکست‌ها مانند یک «سندباکس سبک» داخل برنامهٔ Node.js عمل می‌کنند و هرکدام globalThis مخصوص خود را دارند. این ماژول برای اجرای پویا، موتورهای قالب (Template Engines)، سیستم‌های افزونه (Plugin Systems)، REPLها و تست ایزولهٔ منطق بسیار مناسب است. اما نکتهٔ بسیار مهم: vm یک ابزار امنیتی نیست و نباید برای اجرای کدهای غیرقابل‌اعتماد استفاده شود.

ادامه

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

ادامه

راهنمای جامع Worker Threads در Node.js (ماژول node:worker_threads)

ماژول node:worker_threads امکان اجرای واقعی چندریسمانی (Multithreading) را در Node.js فراهم می‌کند. برخلاف مدل تک‌ریسمانی سنتی Node.js، Worker Threads اجازه می‌دهند کارهای سنگین CPU در ریسه‌های جداگانه اجرا شوند بدون اینکه حلقهٔ رویداد (Event Loop) مسدود شود. این ماژول از حافظهٔ اشتراکی، انتقال بدون کپی (Zero‑Copy)، کانال‌های پیام، Worker Pool، محدودیت منابع و ابزارهای همگام‌سازی پیشرفته پشتیبانی می‌کند. Worker Threads برای پردازش‌های محاسباتی سنگین ایده‌آل هستند، در حالی که I/O همچنان باید توسط ریسهٔ اصلی مدیریت شود.

ادامه

راهنمای جامع ماژول util در Node.js

ماژول node:util مجموعه‌ای از توابع کمکی قدرتمند برای استفاده در هستهٔ Node.js و همچنین توسعهٔ برنامه‌ها ارائه می‌دهد. این ماژول ابزارهایی برای دیباگ، بازرسی اشیا، تبدیل Callback ↔ Promise، قالب‌بندی رشته‌ها، بررسی انواع، مدیریت خطاها، رمزگذاری متن، پردازش MIME، پارس آرگومان‌های CLI، سیگنال‌های Abort، و ابزارهای متفرقه فراهم می‌کند. این ماژول یکی از جعبه‌ابزارهای اصلی و ضروری برای توسعه‌دهندگان Node.js است.

ادامه

راهنمای جامع ماژول URL در Node.js

ماژول node:url ابزارهایی برای تحلیل، ساخت، و دست‌کاری URLها در Node.js فراهم می‌کند. Node.js دو API برای کار با URL دارد: WHATWG URL API — استاندارد مدرن و سازگار با مرورگرها (توصیه‌شده). Legacy API — API قدیمی Node.js (غیرتوصیه‌شده). WHATWG URL API یک رابط تمیز، سازگار و قدرتمند برای کار با اجزای URL، پارامترهای query، الگوهای URL و حتی Blob URLها ارائه می‌دهد.

ادامه