NODE(1) General Commands Manual NODE(1)

node — محیط اجرای جاوااسکریپت سمت سرور

node [گزینه‌ها] [گزینه‌های v8] [<نقطه-ورود-برنامه> | -e رشته | --] [آرگومان‌ها ...] node inspect, [<نقطه-ورود-برنامه> | -e رشته | <میزبان>:<درگاه>] ... node [--v8-options]

نودجی‌اس (Node.js) مجموعه‌ای از کتابخانه‌ها برای جاوااسکریپت است که امکان استفاده از آن در خارج از مرورگر را فراهم می‌کند. تمرکز اصلی آن بر ساخت کارسازها و کارخواه‌های شبکه‌ای ساده با پیاده‌سازی آسان است.

دستور node را بدون آرگومان اجرا کنید تا یک REPL آغاز شود.

-
نام مستعار برای stdin. همانند استفاده از - در سایر ابزارهای خط فرمان، به این معنی است که اسکریپت از stdin خوانده می‌شود و بقیه گزینه‌ها به آن اسکریپت ارسال می‌گردند.
--
پایان گزینه‌های node را مشخص می‌کند. باقی آرگومان‌ها به اسکریپت ارسال می‌شوند. چنانچه پیش از این، نام فایل اسکریپت یا اسکریپت eval/print ارائه نشده باشد، آرگومان بعدی به عنوان نام فایل اسکریپت در نظر گرفته می‌شود.
سقط (Abort) کردن به جای خروج عادی باعث ایجاد یک فایل core برای تحلیل پس از مرگ برنامه با استفاده از یک اشکال‌زدا (مانند lldb، gdb و mdb) می‌شود. در صورت ارسال این فلگ، همچنان می‌توان با استفاده از process.setUncaughtExceptionCaptureCallback() (و از طریق کاربرد ماژول node:domain که از آن بهره می‌برد) رفتار برنامه را طوری تنظیم کرد که سقط نشود.
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض قادر به استفاده از افزونه‌های بومی (native addons) نخواهد بود. تلاش برای انجام این کار خطای ERR_DLOPEN_DISABLED را ایجاد می‌کند، مگر آنکه کاربر هنگام شروع Node.js صراحتاً فلگ --allow-addons را مشخص کرده باشد. مثال:
// تلاش برای require کردن یک افزونه بومی
require('nodejs-addon-example');
$ node --permission --allow-fs-read=* index.js
node:internal/modules/cjs/loader:1319
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: Cannot load native addon because loading addons is disabled.
    at Module._extensions..node (node:internal/modules/cjs/loader:1319:18)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:130:18)
    at Object.<anonymous> (/home/index.js:1:15)
    at Module._compile (node:internal/modules/cjs/loader:1233:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12) {
  code: 'ERR_DLOPEN_DISABLED'
}
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض قادر به ایجاد هیچ فرایند child نخواهد بود. تلاش برای انجام این کار خطای ERR_ACCESS_DENIED ایجاد می‌کند، مگر آنکه کاربر هنگام شروع Node.js صراحتاً فلگ --allow-child-process را مشخص کرده باشد. مثال:
const childProcess = require('node:child_process');
// تلاش برای دور زدن مجوز
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")']);
$ node --permission --allow-fs-read=* index.js
node:internal/child_process:388
  const err = this._handle.spawn(options);
                           ^
Error: Access to this API has been restricted
    at ChildProcess.spawn (node:internal/child_process:388:28)
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'ChildProcess'
}
ای‌پی‌آی child_process.fork() آرگومان‌های اجرایی را از فرایند والد به ارث می‌برد. این بدان معناست که اگر Node.js با فعال بودن Permission Model راه‌اندازی شود و فلگ --allow-child-process تعیین گردد، هر فرایند child ایجادشده با استفاده از child_process.fork() به‌طور خودکار تمامی فلگ‌های مرتبط Permission Model را دریافت خواهد کرد. این رفتار در مورد child_process.spawn() نیز صدق می‌کند، اما در آن حالت، فلگ‌ها به جای آرگومان‌های مستقیم فرایند، از طریق متغیر محیطی NODE_OPTIONS انتشار می‌یابند.
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض قادر به استفاده از ای‌پی‌آی‌های FFI نخواهد بود. تلاش برای استفاده از ای‌پی‌آی‌های FFI یک استثنای ERR_ACCESS_DENIED ایجاد می‌کند مگر آنکه کاربر هنگام شروع Node.js صراحتاً فلگ --allow-ffi را مشخص کرده باشد. ماژول node:ffi همچنین نیازمند فلگ --experimental-ffi است و تنها در بیلدهایی که از FFI پشتیبانی می‌کنند در دسترس است. مثال:
const { DynamicLibrary, suffix } = require('node:ffi');
const lib = new DynamicLibrary(`./mylib.${suffix}`);
$ node --permission --experimental-ffi index.js
Error: Access to this API has been restricted. Use --allow-ffi to manage permissions.
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'FFI'
}
این فلگ مجوزهای خواندن از سیستم فایل (filesystem) را با استفاده از مدل مجوزها (Permission Model) پیکربندی می‌کند. آرگومان‌های معتبر برای فلگ --allow-fs-read عبارتند از:
  • * - برای مجاز کردن تمامی عملیات‌های FileSystemRead.
  • می‌توان چندین مسیر را با استفاده از چند فلگ --allow-fs-read مجاز کرد. مثال: --allow-fs-read=/folder1/ --allow-fs-read=/folder2/
مثال‌ها را می‌توان در مستندات مجوزهای فایل‌سیستم یافت. ماژول مقداردهی اولیه و ماژول‌های سفارشی --require دارای مجوز خواندن ضمنی هستند.
$ node --permission -r custom-require.js -r custom-require-2.js index.js
  • فایل‌های custom-require.js، custom-require-2.js و index.js به‌طور پیش‌فرض در فهرست خواندن مجاز قرار خواهند گرفت.
process.permission.has('fs.read', 'index.js'); // true
process.permission.has('fs.read', 'custom-require.js'); // true
process.permission.has('fs.read', 'custom-require-2.js'); // true
این فلگ مجوزهای نوشتن در سیستم فایل (filesystem) را با استفاده از مدل مجوزها (Permission Model) پیکربندی می‌کند. آرگومان‌های معتبر برای فلگ --allow-fs-write عبارتند از:
  • * - برای مجاز کردن تمامی عملیات‌های FileSystemWrite.
  • می‌توان چندین مسیر را با استفاده از چند فلگ --allow-fs-write مجاز کرد. مثال: --allow-fs-write=/folder1/ --allow-fs-write=/folder2/
مسیرهای جداشده با کاما (,) دیگر مجاز نیستند. در صورت ارسال یک فلگ همراه با کاما، یک هشدار نمایش داده خواهد شد. مثال‌ها را می‌توان در مستندات مجوزهای فایل‌سیستم یافت.
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض قادر به اتصال از طریق پروتکل بازرس (inspector) نخواهد بود. تلاش برای انجام این کار خطای ERR_ACCESS_DENIED ایجاد می‌کند، مگر آنکه کاربر هنگام شروع Node.js صراحتاً فلگ --allow-inspector را ارسال کند. مثال:
const { Session } = require('node:inspector/promises');

const session = new Session();
session.connect();
$ node --permission index.js
Error: connect ERR_ACCESS_DENIED Access to this API has been restricted. Use --allow-inspector to manage permissions.
  code: 'ERR_ACCESS_DENIED',
}
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض به شبکه دسترسی نخواهد داشت. تلاش برای انجام این کار خطای ERR_ACCESS_DENIED ایجاد می‌کند، مگر آنکه کاربر هنگام شروع Node.js صراحتاً فلگ --allow-net را ارسال کند. مثال:
const http = require('node:http');
// تلاش برای دور زدن مجوز
const req = http.get('http://example.com', () => {});

req.on('error', (err) => {
  console.log('err', err);
});
$ node --permission index.js
Error: connect ERR_ACCESS_DENIED Access to this API has been restricted. Use --allow-net to manage permissions.
  code: 'ERR_ACCESS_DENIED',
}
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض قادر به استفاده از لودرهای OpenSSL STORE نخواهد بود، برای نمونه جهت بارگذاری یک کلید خصوصی از یک <URL> ارسال‌شده به crypto.createPrivateKey(). تلاش برای انجام این کار یک خطای ERR_ACCESS_DENIED ایجاد می‌کند مگر آنکه کاربر صراحتاً فلگ --allow-openssl-store را ارسال کند. این مجوز را می‌توان در زمان اجرا با استفاده از permission.drop() ساقط کرد. این فلگ اختیارات گسترده‌ای به لودرهای پیکربندی‌شدهٔ OpenSSL STORE اعطا می‌کند. یک لودر ممکن است به فایل‌ها، دستگاه‌ها، توکن‌ها یا شبکه دسترسی داشته باشد. دسترسی‌های انجام‌شده توسط لودر توسط محدوده‌های مجوز fs.read، fs.write یا net مقید نمی‌شوند.
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض قادر به ساخت هیچ نمونه‌ای از WASI نخواهد بود. به دلایل امنیتی، این فراخوانی خطای ERR_ACCESS_DENIED ایجاد می‌کند مگر آنکه کاربر صراحتاً فلگ --allow-wasi را در فرایند اصلی Node.js ارسال کند. مثال:
const { WASI } = require('node:wasi');
// تلاش برای دور زدن مجوز
new WASI({
  version: 'preview1',
  // تلاش برای مانت کردن کل فایل‌سیستم
  preopens: {
    '/': '/',
  },
});
$ node --permission --allow-fs-read=* index.js

Error: Access to this API has been restricted
    at node:internal/main/run_main_module:30:49 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'WASI',
}
هنگام استفاده از مدل مجوزها (Permission Model)، فرایند به‌طور پیش‌فرض قادر به ایجاد هیچ ریسمان کارگری (worker thread) نخواهد بود. به دلایل امنیتی، این فراخوانی خطای ERR_ACCESS_DENIED ایجاد می‌کند مگر آنکه کاربر صراحتاً فلگ --allow-worker را در فرایند اصلی Node.js ارسال کند. مثال:
const { Worker } = require('node:worker_threads');
// تلاش برای دور زدن مجوز
new Worker(__filename);
$ node --permission --allow-fs-read=* index.js

Error: Access to this API has been restricted
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'WorkerThreads'
}
=config
یک برنامه اجرایی تک‌فایلی (single executable application) را از روی یک فایل پیکربندی JSON تولید می‌کند. آرگومان باید مسیری به فایل پیکربندی باشد. اگر مسیر مطلق نباشد، نسبت به دایرکتوری کاری فعلی حل می‌شود. برای فیلدهای پیکربندی، نکات میان‌پلتفرمی و ای‌پی‌آی‌های دارایی‌ها، مستندات single executable application را بررسی کنید.
هنگام خروج فرایند، یک snapshot blob ایجاد کرده و آن را بر روی دیسک می‌نویسد که بعداً می‌تواند با --snapshot-blob بارگذاری شود. هنگام ساخت اسنپ‌شات، چنانچه --snapshot-blob مشخص نشده باشد، بلاب تولیدشده به‌طور پیش‌فرض در فایل snapshot.blob در دایرکتوری کاری جاری نوشته خواهد شد. در غیر این صورت در مسیر مشخص‌شده توسط --snapshot-blob ذخیره می‌شود.
$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js

# Run snapshot.js to initialize the application and snapshot the
# state of it into snapshot.blob.
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js

$ echo "console.log(globalThis.foo)" > index.js

# Load the generated snapshot and start the application from index.js.
$ node --snapshot-blob snapshot.blob index.js
I am from the snapshot
ای‌پی‌آی v8.startupSnapshot می‌تواند برای تعیین نقطه ورود در زمان ساخت اسنپ‌شات استفاده شود، بدین ترتیب از نیاز به یک اسکریپت ورودی اضافی در زمان بازیابی (deserialization) جلوگیری می‌کند:
$ echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('I am from the snapshot'))" > snapshot.js
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ node --snapshot-blob snapshot.blob
I am from the snapshot
برای اطلاعات بیشتر، مستندات ای‌پی‌آی v8.startupSnapshot را بررسی کنید. اسنپ‌شات در حال حاضر فقط از بارگذاری یک نقطه ورود منفرد در طول فرایند ساخت اسنپ‌شات پشتیبانی می‌کند که می‌تواند ماژول‌های توکار را بارگذاری کند، اما ماژول‌های اضافی در فضای کاربری را خیر. کاربران می‌توانند برنامه‌های خود را با باندلر دلخواه پیش از ساخت اسنپ‌شات در یک اسکریپت واحد بسته‌بندی کنند. از آنجا که اطمینان از قابلیت سریال‌سازی همه ماژول‌های توکار که با گذشت زمان افزایش می‌یابند دشوار است، تنها زیرمجموعه‌ای از ماژول‌های توکار به خوبی آزمایش شده‌اند تا در طول فرایند ساخت اسنپ‌شات قابل سریال‌سازی باشند. مجموعه آزمون هسته Node.js بررسی می‌کند که چند برنامه نسبتاً پیچیده بتوانند اسنپ‌شات شوند. فهرست ماژول‌های توکاری که در اسنپ‌شات توکار Node.js گنجانده شده‌اند، پشتیبانی‌شده تلقی می‌شوند. هنگامی که سازنده اسنپ‌شات با ماژول توکاری روبرو شود که قابل سریال‌سازی نیست، ممکن است فرایند ساخت اسنپ‌شات دچار خرابی شود. در این صورت، یک راه‌حل معمول به تعویق انداختن بارگذاری آن ماژول تا زمان اجرا با استفاده از v8.startupSnapshot.setDeserializeMainFunction() یا v8.startupSnapshot.addDeserializeCallback() است. چنانچه نیاز به سریال‌سازی برای یک ماژول اضافی در طول فرایند ساخت اسنپ‌شات دارید، لطفاً یک درخواست در ردیاب مشکلات Node.js ثبت کنید.
مسیر یک فایل پیکربندی JSON را مشخص می‌کند که رفتار ساخت اسنپ‌شات را تنظیم می‌نماید. گزینه‌های زیر در حال حاضر پشتیبانی می‌شوند:
  • builder <string> الزامی. نام اسکریپتی را تعیین می‌کند که پیش از ساخت اسنپ‌شات اجرا می‌شود، درست مانند اینکه --build-snapshot همراه با builder به عنوان نام اسکریپت اصلی ارسال شده باشد.
  • withoutCodeCache <boolean> اختیاری. گنجاندن کش کد زمان صرف‌شده برای کامپایل توابع گنجانده‌شده در اسنپ‌شات را کاهش می‌دهد، ولی در عین حال موجب بزرگتر شدن حجم اسنپ‌شات و احتمالاً آسیب به قابلیت جابجایی (portability) اسنپ‌شات می‌شود.
هنگام استفاده از این فلگ، فایل‌های اسکریپت اضافی ارائه‌شده در خط فرمان اجرا نخواهند شد و در عوض به عنوان آرگومان‌های معمولی خط فرمان تفسیر می‌شوند.
, --check
بررسی نحو (Syntax check) اسکریپت بدون اجرای آن.
چاپ اسکریپت تکمیل خودکار قابل source برای bash در Node.js.
node --completion-bash > node_bash_completion
source node_bash_completion
condition, --conditions=condition
شرایط سفارشی برای حل اکسپورت‌های مشروط (conditional exports) را فراهم می‌کند. هر تعداد نام شرط رشته‌ای سفارشی مجاز است. شرایط پیش‌فرض Node.js یعنی "node"، "default"، "import" و "require" همیشه طبق تعریف اعمال خواهند شد. به عنوان مثال، برای اجرای یک ماژول با تفکیک‌های "development":
node -C development app.js
پروفایلر CPU مربوط به V8 را هنگام راه‌اندازی آغاز کرده و پیش از خروج، پروفایل CPU را روی دیسک می‌نویسد. اگر --cpu-prof-dir مشخص نشده باشد، پروفایل تولیدشده در دایرکتوری کاری جاری قرار می‌گیرد. اگر --cpu-prof-name مشخص نشده باشد، پروفایل تولیدشده با نام CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile نام‌گذاری می‌شود.
$ node --cpu-prof index.js
$ ls *.cpuprofile
CPU.20190409.202950.15293.0.0.cpuprofile
اگر --cpu-prof-name مشخص شده باشد، مقدار ارائه‌شده به عنوان یک الگو برای نام فایل استفاده می‌شود. جانگهدار زیر پشتیبانی می‌شود و در زمان اجرا جایگزین خواهد شد:
  • ${pid} — شناسه فرایند جاری (Process ID)
$ node --cpu-prof --cpu-prof-name 'CPU.${pid}.cpuprofile' index.js
$ ls *.cpuprofile
CPU.15293.cpuprofile
دایرکتوری محل قرارگیری پروفایل‌های CPU تولیدشده توسط --cpu-prof را مشخص می‌کند. مقدار پیش‌فرض توسط گزینه خط فرمان --diagnostic-dir کنترل می‌شود.
فاصله زمانی نمونه‌برداری را بر حسب میکروثانیه برای پروفایل‌های CPU تولیدشده توسط --cpu-prof مشخص می‌کند. مقدار پیش‌فرض ۱۰۰۰ میکروثانیه است.
نام فایل پروفایل CPU تولیدشده توسط --cpu-prof را مشخص می‌کند.
=directory
Set the directory to which all diagnostic output files are written. Defaults to current working directory. Affects the default output directory of:
  • --cpu-prof-dir
  • --heap-prof-dir
  • --redirect-warnings
=mode
ویژگی Object.prototype.__proto__ را غیرفعال می‌کند. اگر mode برابر با delete باشد، ویژگی به‌طور کامل حذف می‌شود. اگر mode برابر با throw باشد، دسترسی به این ویژگی استثنایی با کد ERR_PROTO_ACCESS ایجاد می‌کند.
امکان آغاز یک نشست اشکال‌زدایی با ارسال سیگنال SIGUSR1 به فرایند را غیرفعال می‌کند.
=code-or-type
هشدارهای خاص فرایند را بر اساس code یا type غیرفعال می‌کند. هشدارهای ارسال‌شده از process.emitWarning() ممکن است حاوی یک code و یک type باشند. این گزینه هشدارهایی را که دارای code یا type منطبق باشند منتشر نمی‌کند. فهرست هشدارهای منسوخ‌شدگی. انواع هشدارهای هسته Node.js عبارتند از: DeprecationWarning و ExperimentalWarning برای مثال، اسکریپت زیر هنگام اجرا با node --disable-warning=DEP0025 هشدار DEP0025 require('node:sys') را صادر نخواهد کرد:
import sys from 'node:sys';
const sys = require('node:sys');
برای مثال، اسکریپت زیر هشدار DEP0025 require('node:sys') را صادر می‌کند، اما هیچ‌کدام از هشدارهای آزمایشی (مانند ExperimentalWarning: vm.measureMemory is an experimental feature in <=v21) را هنگام اجرا با node --disable-warning=ExperimentalWarning صادر نخواهد کرد:
import sys from 'node:sys';
import vm from 'node:vm';

vm.measureMemory();
const sys = require('node:sys');
const vm = require('node:vm');

vm.measureMemory();
نودجی‌اس بررسی‌های محدوده WebAssembly مبتنی بر trap-handler مربوط به V8 را روی پلتفرم‌های ۶۴ بیتی فعال می‌کند که با حذف نیاز به بررسی‌های محدوده درون‌خطی، عملکرد WebAssembly را به‌طور چشمگیری بهبود می‌بخشد. این بهینه‌سازی نیازمند تخصیص یک قفسه (cage) حافظه مجازی بزرگ به ازای هر نمونه حافظه WebAssembly است (در حال حاضر معمولاً ۸ گیگابایت برای حافظه ۳۲ بیتی WebAssembly، و ۱۶ گیگابایت برای حافظه ۶۴ بیتی WebAssembly) تا دسترسی‌های خارج از محدوده را به دام بیندازد. در بیشتر پلتفرم‌های ۶۴ بیتی، فضای آدرس حافظه مجازی معمولاً به اندازه کافی بزرگ است (حدود ۱۲۸ ترابایت) تا کاربردهای معمول WebAssembly را در بر گیرد، اما اگر سیستم محدودیت‌های دستی روی حافظه مجازی داشته باشد (مثلاً از طریق ulimit -v)، تخصیص حافظه WebAssembly به احتمال زیاد با خطای WebAssembly.Memory(): could not allocate memory با شکست مواجه می‌شود. در زمان راه‌اندازی، Node.js به‌طور خودکار بررسی می‌کند که آیا حافظه مجازی کافی برای تخصیص حداقل یک قفسه در دسترس است یا خیر، و در غیر این صورت، بهینه‌سازی trap-handler به‌طور خودکار غیرفعال می‌شود تا WebAssembly همچنان بتواند با استفاده از بررسی‌های محدوده درون‌خطی (با کارایی کمتر) اجرا شود. اما اگر برنامه نیاز به ایجاد چندین نمونه حافظه WebAssembly داشته باشد و سیستم همچنان محدودیت نسبتاً بالایی روی حافظه مجازی اعمال کرده باشد، ممکن است تخصیص نمونه‌های حافظه WebAssembly به دلیل افزایش مصرف حافظه مجازی، سریع‌تر از حد انتظار با شکست مواجه شود. گزینه --disable-wasm-trap-handler این بهینه‌سازی را به‌طور کامل غیرفعال می‌کند تا نمونه‌های حافظه WebAssembly همیشه به جای رزرو قفسه‌های بزرگ حافظه مجازی، از بررسی‌های محدوده درون‌خطی استفاده کنند. این امر اجازه می‌دهد تا در زمانی که فضای آدرس حافظه مجازی در دسترس فرایند Node.js محدود است، نمونه‌های بیشتری ایجاد شوند.
باعث می‌شود که ویژگی‌های درونی زبان مانند eval و new Function که از رشته‌ها کد تولید می‌کنند، به جای آن یک استثنا ایجاد نمایند. این گزینه بر ماژول node:vm در Node.js تأثیر نمی‌گذارد.
=order
مقدار پیش‌فرض order را در dns.lookup() و dnsPromises.lookup() تعیین می‌کند. مقدار می‌تواند یکی از موارد زیر باشد:
  • ipv4first: مقدار پیش‌فرض order را به ipv4first تنظیم می‌کند.
  • ipv6first: مقدار پیش‌فرض order را به ipv6first تنظیم می‌کند.
  • verbatim: مقدار پیش‌فرض order را به verbatim تنظیم می‌کند.
مقدار پیش‌فرض verbatim است و تابع dns.setDefaultResultOrder() دارای اولویت بالاتری نسبت به --dns-result-order است.
فعال‌سازی حالت FIPS در زمان راه‌اندازی. با OpenSSL 3، یک ارائه‌دهندهٔ پیکربندی‌شده به نام fips باید در دسترس بوده و با موفقیت مقداردهی اولیه شود. با OpenSSL 1.1.1، باید Node.js در برابر یک نسخه OpenSSL با قابلیت FIPS بیلد شده باشد.
فعال‌سازی پشتیبانی از نگاشت مبدأ (Source Map) برای ردگیری پشته (stack traces). هنگام استفاده از یک ترنسپایلر مانند TypeScript، ردگیری پشته صادرشده توسط یک برنامه به کد ترنسپایل‌شده اشاره دارد، نه موقعیت منبع اصلی. گزینه --enable-source-maps کش کردن نگاشت‌های مبدأ را فعال می‌کند و نهایت تلاش خود را برای گزارش ردگیری پشته نسبت به فایل منبع اصلی انجام می‌دهد. بازنویسی Error.prepareStackTrace ممکن است مانع از تغییر ردگیری پشته توسط --enable-source-maps شود. در تابع بازنویس، نتایج تابع اصلی Error.prepareStackTrace را فراخوانی کرده و بازگردانید تا ردگیری پشته با نگاشت مبدأ اصلاح شود.
const originalPrepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (error, trace) => {
  // Modify error and trace and format stack trace with
  // original Error.prepareStackTrace.
  return originalPrepareStackTrace(error, trace);
};
توجه داشته باشید که فعال‌سازی نگاشت‌های مبدأ می‌تواند هنگام دسترسی به Error.stack تأخیر در برنامه ایجاد کند. اگر در برنامه خود مکرراً به Error.stack دسترسی دارید، پیامدهای کارایی --enable-source-maps را در نظر بگیرید.
در صورت وجود، Node.js نقطه ورود را به جای یک مسیر، به عنوان یک URL تفسیر خواهد کرد. از قواعد تفکیک ماژول‌های ECMAScript پیروی می‌کند. هر پارامتر پرس‌وجو یا هش در URL از طریق import.meta.url قابل دسترسی خواهد بود.
node --entry-url 'file:///path/to/file.js?queryparams=work#and-hashes-too'
node --entry-url 'file.ts?query#hash'
node --entry-url 'data:text/javascript,console.log("Hello")'
=file
رفتار آن مشابه --env-file است، اما چنانچه فایل وجود نداشته باشد، خطایی صادر نمی‌شود.
=file
متغیرهای محیطی را از فایلی نسبت به دایرکتوری جاری بارگذاری کرده و آن‌ها را در process.env در دسترس برنامه‌ها قرار می‌دهد. متغیرهای محیطی پیکربندی‌کننده Node.js، مانند NODE_OPTIONS، تجزیه و اعمال می‌شوند. اگر متغیر یکسانی در محیط و در فایل تعریف شده باشد، مقدار محیط اولویت خواهد داشت. می‌توان چندین آرگومان --env-file را ارسال کرد. فایل‌های بعدی متغیرهای پیشینِ تعریف‌شده در فایل‌های قبلی را بازنویسی می‌کنند. اگر فایل وجود نداشته باشد، خطا صادر می‌شود.
node --env-file=.env --env-file=.development.env index.js
فرمت فایل باید به صورت یک جفت کلید-مقدار در هر خط باشد که با = از هم جدا شده‌اند:
PORT=3000
هر متنی پس از # به عنوان کامنت تلقی می‌شود:
# This is a comment
PORT=3000 # This is also a comment
مقادیر می‌توانند با نقل‌قول‌های روبه‌رو شروع شده و خاتمه یابند: `، " یا '. آن‌ها از مقادیر حذف می‌شوند.
USERNAME="nodejs" # will result in `nodejs` as the value.
مقادیر چندخطی پشتیبانی می‌شوند:
MULTI_LINE="THIS IS
A MULTILINE"
# will result in `THIS IS\nA MULTILINE` as the value.
کلمه کلیدی export پیش از کلید نادیده گرفته می‌شود:
export USERNAME="nodejs" # will result in `nodejs` as the value.
اگر می‌خواهید متغیرهای محیطی را از فایلی بارگذاری کنید که ممکن است وجود نداشته باشد، می‌توانید به جای آن از فلگ --env-file-if-exists استفاده کنید.
, --eval script
آرگومان بعدی را به عنوان جاوااسکریپت ارزیابی می‌کند. ماژول‌هایی که در REPL از پیش تعریف شده‌اند را می‌توان در script نیز استفاده کرد. اگر script با - آغاز شود، آن را با استفاده از = ارسال کنید (برای مثال node --print --eval=-42) تا به عنوان مقدار --eval تجزیه شود. در ویندوز، استفاده از cmd.exe با نقل‌قول تکی به درستی کار نخواهد کرد زیرا فقط نقل‌قول دوگانه " را برای نقل‌قول می‌شناسد. در Powershell یا Git bash هر دو علامت ' و " قابل استفاده هستند. اجرای کد حاوی انواع درون‌خطی امکان‌پذیر است مگر اینکه فلگ --no-strip-types ارائه شده باشد.
فعال‌سازی پشتیبانی آزمایشی از وارد کردن (import) افزونه‌های .node.
=path, --experimental-config-file
در صورت وجود، Node.js به دنبال یک فایل پیکربندی در مسیر مشخص‌شده می‌گردد. اگر مسیر مشخص نشده باشد، Node.js به دنبال یک فایل node.config.json در دایرکتوری کاری جاری خواهد گشت. برای تعیین یک مسیر سفارشی، از ساختار --experimental-config-file=path استفاده کنید. ساختار جداشده با فاصله --experimental-config-file path پشتیبانی نمی‌شود. نام مستعار --experimental-default-config-file معادل با --experimental-config-file بدون آرگومان است. نودجی‌اس فایل پیکربندی را می‌خواند و تنظیمات را اعمال می‌کند. فایل پیکربندی باید یک فایل JSON با ساختار زیر باشد. مقدار vX.Y.Z در $schema باید با نسخه Node.js در حال استفاده یا latest-vX.x برای آخرین نسخه از آن سری انتشار اصلی جایگزین شود.
{
  "$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
  "nodeOptions": {
    "import": [
      "amaro/strip"
    ],
    "watch-path": "src",
    "watch-preserve-output": true
  },
  "test": {
    "test-isolation": "process"
  },
  "watch": {
    "watch-preserve-output": true
  }
}
فایل پیکربندی از گزینه‌های مختص به فضای نام پشتیبانی می‌کند:
  • فیلد nodeOptions شامل فلگ‌های خط فرمانی است که در NODE_OPTIONS مجاز هستند.
  • فیلدهای فضای نام مانند test، watch و permission حاوی پیکربندی مختص به آن زیرسیستم هستند.
فایل پیکربندی می‌تواند یک نسخه اصلی مشخص Node.js را با nodeVersion هدف قرار دهد:
{
  "nodeVersion": 25,
  "nodeOptions": {
    "watch-path": "src"
  }
}
برای نگهداری چندین پیکربندی مختص به نسخه در یک فایل، از آرایه configs استفاده کنید. نودجی‌اس از اولین موردی استفاده می‌کند که nodeVersion آن با نسخه اصلی جاری Node.js مطابقت داشته باشد:
{
  "$schema": "https://nodejs.org/dist/latest-v26.x/docs/node-config-schema.json",
  "configs": [
    {
      "nodeVersion": 25,
      "config": {
        "$schema": "https://nodejs.org/dist/latest-v25.x/docs/node-config-schema.json",
        "nodeOptions": {
          "watch-path": "src"
        }
      }
    }
  ]
}
هنگامی که از configs استفاده می‌شود، بالاترین سطح تنها می‌تواند شامل $schema و configs باشد. هر مورد configs باید یک عدد صحیح nodeVersion و یک شیء config تعریف کند. یک پیکربندی تکی سطح بالا نیازی به nodeVersion ندارد، اما در صورت وجود باید با نسخه اصلی جاری Node.js مطابقت داشته باشد. هنگامی که یک فضای نام در فایل پیکربندی وجود داشته باشد، Node.js به‌طور خودکار فلگ متناظر (مانند --test، --watch، --permission) را فعال می‌کند. این امر به شما اجازه می‌دهد تا گزینه‌های مختص زیرسیستم را بدون ارسال صریح فلگ در خط فرمان پیکربندی کنید. برای مثال:
{
  "test": {
    "test-isolation": "process"
  }
}
معادل است با:
node --test --test-isolation=process
برای غیرفعال کردن فلگ خودکار در حین استفاده از گزینه‌های فضای نام، می‌توانید صراحتاً مقدار فلگ را درون فضای نام به false تنظیم کنید:
{
  "test": {
    "test": false,
    "test-isolation": "process"
  }
}
فلگ‌های No-op پشتیبانی نمی‌شوند. همه فلگ‌های V8 در حال حاضر پشتیبانی نمی‌شوند. امکان استفاده از شمای رسمی JSON برای اعتبارسنجی فایل پیکربندی وجود دارد که ممکن است بسته به نسخه Node.js متفاوت باشد. هر کلید در فایل پیکربندی متناظر با یک فلگ است که می‌تواند به عنوان آرگومان خط فرمان ارسال شود. مقدار کلید همان مقداری است که به فلگ ارسال خواهد شد. برای مثال، فایل پیکربندی بالا معادل با آرگومان‌های خط فرمان زیر است:
node --import amaro/strip --watch-path=src --watch-preserve-output --test-isolation=process
اولویت در پیکربندی به شرح زیر است:
  • متغیر NODE_OPTIONS و گزینه‌های خط فرمان
  • گزینه‌های NODE_OPTIONS در Dotenv
  • فایل پیکربندی
مقادیر فایل پیکربندی، مقادیر متغیرهای محیطی، گزینه‌های خط فرمان یا فایل محیطی NODE_OPTIONS تجزیه‌شده توسط فلگ --env-file را بازنویسی نخواهند کرد. کلیدها نمی‌توانند در همان فضای نام یا در فضاهای نام مختلف تکرار شوند. تجزیه‌کننده پیکربندی در صورتی که فایل پیکربندی شامل کلیدهای ناشناخته یا کلیدهایی باشد که در یک فضای نام قابل استفاده نیستند، خطایی صادر خواهد کرد. نودجی‌اس پیکربندی ارائه‌شده توسط کاربر را اعتبارسنجی یا پالایش نمی‌کند، بنابراین هرگز از فایل‌های پیکربندی نامعتمد استفاده نکنید.
این فلگ نام مستعاری برای --experimental-config-file بدون آرگومان است. در صورت وجود، Node.js به دنبال یک فایل node.config.json در دایرکتوری کاری جاری گشته و آن را به عنوان فایل پیکربندی بارگذاری می‌کند.
فعال‌سازی ارائه وب‌ای‌پی‌آی EventSource در دامنه سراسری (global scope).
ماژول آزمایشی node:ffi را فعال می‌کند. این فلگ تنها در بیلدهایی با پشتیبانی FFI در دسترس است.
پشتیبانی آزمایشی از URL والد در import.meta.resolve() را فعال می‌کند که اجازه می‌دهد آرگومان دوم parentURL برای حل متنی ارسال شود. پیش‌تر کل ویژگی import.meta.resolve را کنترل می‌کرد.
فعال‌سازی پشتیبانی آزمایشی از وارد کردن ماژول‌ها با with { type: 'text' }.
فعال‌سازی پشتیبانی آزمایشی از منابع شبکه بازرس (inspector).
=module
ماژول (module) حاوی قلاب‌های سفارشی‌سازی ناهمگام ماژولِ صادرشده را مشخص می‌کند. پارامتر module می‌تواند هر رشته‌ای باشد که به عنوان مشخص‌کننده import پذیرفته می‌شود. این ویژگی در صورت استفاده با مدل مجوزها (Permission Model) نیازمند --allow-worker است.
فعال‌سازی پشتیبانی آزمایشی از بازرسی شبکه با ابزارهای توسعه کروم (Chrome DevTools).
=<path>
فعال‌سازی حل آزمایشی نگاشت بسته (package map). آرگومان path مکان یک فایل پیکربندی JSON را مشخص می‌کند که نگاشت‌های حل بسته را تعریف می‌نماید.
node --experimental-package-map=./package-map.json app.js
هنگام فعال بودن، حل مشخص‌کننده‌های ساده برای حل به نگاشت بسته مراجعه می‌کند. این امر اجازه کنترل صریح بر اینکه کدام بسته‌ها می‌توانند چه وابستگی‌هایی را وارد کنند می‌دهد. برای جزئیات درباره فرمت فایل پیکربندی و الگوریتم حل، مستندات Package maps را ببینید.
اگر گراف ماژول ES به دلیل داشتن هرگونه await در سطح بالا نتواند require() شود، این فلگ به Node.js اجازه می‌دهد تا مکان آن‌ها را پیدا کرده و چاپ کند.
فعال‌سازی پشتیبانی آزمایشی از پروتکل QUIC.
از این فلگ برای ایجاد یک بلاب (blob) استفاده کنید که می‌تواند درون باینری Node.js تزریق شود تا یک برنامه اجرایی مستقل (single executable application) تولید گردد. برای جزئیات بیشتر، مستندات مربوط به این پیکربندی را ببینید.
از این فلگ برای فعال‌سازی پشتیبانی از ShadowRealm استفاده کنید.
فعال‌سازی پشتیبانی آزمایشی از بازرسی حافظه ذخیره‌سازی.
ماژول آزمایشی node:stream/iter را فعال می‌کند.
هنگامی که همراه با ماژول node:test استفاده شود، یک گزارش پوشش کد به عنوان بخشی از خروجی test runner تولید می‌شود. اگر هیچ آزمایشی اجرا نشود، گزارش پوشش تولید نخواهد شد. برای جزئیات بیشتر مستندات جمع‌آوری پوشش کد از آزمایش‌ها را ببینید.
ماک کردن ماژول را در test runner فعال می‌کند. این ویژگی در صورت استفاده همراه با مدل مجوزها (Permission Model) نیازمند --allow-worker است.
='<expr>'
تنها آزمایش‌هایی را اجرا می‌کند که با عبارت بولی فیلتر برچسب ارائه‌شده مطابقت داشته باشند. آزمایش‌ها برچسب‌ها را از طریق گزینه tags در test()، it()، suite() یا describe() اعلان می‌کنند. برچسب‌ها از سوئیت‌ها به آزمایش‌های تودرتو با اجتماع به ارث می‌رسند. این عبارت از عملگرهای بولی (and/&&، or/||، not/!)، پرانتزها برای گروه‌بندی و نویسه‌های عام * درون شناسه‌ها پشتیبانی می‌کند. اولویت استاندارد اعمال می‌شود: not اتصال قوی‌تری نسبت به and و آن نیز اتصال قوی‌تری نسبت به or دارد. برای دستور زبان کامل و رفتار، Test tags را ببینید. این فلگ می‌تواند بیش از یک بار مشخص شود؛ چندین عبارت با AND ترکیب می‌شوند، بنابراین یک آزمایش باید هر عبارت را برای اجرا برآورده کند. یک عبارت نادرست باعث می‌شود که test runner پیش از اجرای هر آزمایشی با وضعیتی غیرصفر خارج شود.
ماژول آزمایشی node:vfs را فعال می‌کند.
پشتیبانی آزمایشی از ماژول‌های ES را در ماژول node:vm فعال می‌کند.
پشتیبانی آزمایشی از واسط سیستم وب‌اسمبلی (WASI) را فعال می‌کند.
پشتیبانی آزمایشی از بازرسی worker را با ابزارهای توسعه Chrome DevTools فعال می‌کند.
بارگذاری افزونه‌های بومی که context-aware نیستند را غیرفعال می‌کند.
حالت FIPS را در زمان راه‌اندازی فعال کرده و از غیرفعال شدن آن توسط کد اسکریپت جلوگیری می‌کند. نیازمندی‌های OpenSSL مشابه --enable-fips اعمال می‌شوند.
رویداد uncaughtException را روی فراخوانی‌های بازگشتی ناهمگام Node-API اجباری می‌کند. برای جلوگیری از فروپاشی فرایند توسط یک افزونه موجود، این فلگ به‌طور پیش‌فرض فعال نیست. در آینده این فلگ به‌طور پیش‌فرض فعال خواهد شد تا رفتار صحیح تضمین گردد.
ویژگی‌های توکار منجمدشده آزمایشی مانند Array و Object را فعال می‌کند. تنها بافت ریشه پشتیبانی می‌شود. هیچ تضمینی وجود ندارد که globalThis.Array در واقع مرجع توکار پیش‌فرض باشد. کد ممکن است تحت این فلگ دچار خطا شود. برای مجاز ساختن افزودن پلی‌فیل‌ها، هر دو فلگ --require و --import پیش از منجمد کردن موارد توکار اجرا می‌شوند.
پروفایلر هیپ V8 را در زمان راه‌اندازی آغاز کرده و پیش از خروج، پروفایل هیپ را بر روی دیسک می‌نویسد. اگر --heap-prof-dir مشخص نشده باشد، پروفایل تولیدشده در دایرکتوری کاری جاری قرار می‌گیرد. اگر --heap-prof-name مشخص نشده باشد، پروفایل تولیدشده با نام Heap.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.heapprofile ذخیره می‌شود.
$ node --heap-prof index.js
$ ls *.heapprofile
Heap.20190409.202950.15293.0.001.heapprofile
دایرکتوری محل قرارگیری پروفایل‌های هیپ تولیدشده توسط --heap-prof را مشخص می‌کند. مقدار پیش‌فرض توسط گزینه خط فرمان --diagnostic-dir کنترل می‌شود.
میانگین فاصله نمونه‌برداری را بر حسب بایت برای پروفایل‌های هیپ تولیدشده توسط --heap-prof مشخص می‌کند. مقدار پیش‌فرض 512 * 1024 بایت است.
نام فایل پروفایل هیپ تولیدشده توسط --heap-prof را مشخص می‌کند.
=max_count
هنگامی که مصرف هیپ V8 به حد مجاز هیپ نزدیک می‌شود، یک اسنپ‌شات هیپ V8 را روی دیسک می‌نویسد. مقدار count باید یک عدد صحیح غیرمنفی باشد (در این حالت Node.js حداکثر max_count اسنپ‌شات را روی دیسک می‌نویسد). هنگام تولید اسنپ‌شات‌ها، فرایند زباله‌روبی ممکن است اجرا شده و مصرف هیپ را کاهش دهد. بنابراین چندین اسنپ‌شات ممکن است پیش از اتمام نهایی حافظه نمونه Node.js روی دیسک نوشته شوند. این اسنپ‌شات‌های هیپ را می‌توان برای تعیین اینکه چه اشیایی در طول زمانِ گرفتن اسنپ‌شات‌های متوالی تخصیص داده می‌شوند مقایسه کرد. تضمین نمی‌شود که Node.js دقیقاً max_count اسنپ‌شات را بنویسد، اما نهایت تلاش خود را می‌کند تا دست‌کم یکی و حداکثر تا max_count اسنپ‌شات را پیش از اتمام حافظه نمونه Node.js زمانی که max_count بزرگتر از 0 است تولید کند. تولید اسنپ‌شات‌های V8 نیازمند زمان و حافظه است (هم حافظه مدیریت‌شده توسط هیپ V8 و هم حافظه بومی خارج از هیپ V8). هر چه هیپ بزرگتر باشد، منابع بیشتری مصرف خواهد شد. Node.js هیپ V8 را برای جبران سربار حافظه اضافی هیپ تنظیم می‌کند و تمام تلاش خود را به کار می‌بندد تا از تمام شدن حافظه در دسترس فرایند جلوگیری کند. در صورتی که فرایند بیش از حد مناسب حافظه مصرف کند، ممکن است بر اساس پیکربندی سیستم ناگهان متوقف شود.
$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js
Wrote snapshot to Heap.20200430.100036.49580.0.001.heapsnapshot
Wrote snapshot to Heap.20200430.100037.49580.0.002.heapsnapshot
Wrote snapshot to Heap.20200430.100038.49580.0.003.heapsnapshot

<--- Last few GCs --->

[49580:0x110000000]     4826 ms: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 ms  (average mu = 0.126, current mu = 0.034) allocation failure scavenge might not succeed
[49580:0x110000000]     4845 ms: Mark-sweep 130.6 (147.8) -> 130.6 (147.8) MB, 18.8 / 0.0 ms  (average mu = 0.088, current mu = 0.031) allocation failure scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
=signal
یک مدیریت‌کننده سیگنال را فعال می‌کند که باعث می‌شود فرایند Node.js هنگام دریافت سیگنال مشخص‌شده یک دامپ هیپ بنویسد. پارامتر signal باید نام یک سیگنال معتبر باشد. به‌طور پیش‌فرض غیرفعال است.
$ node --heapsnapshot-signal=SIGUSR2 index.js &
$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
node         1  5.5  6.1 787252 247004 ?       Ssl  16:43   0:02 node --heapsnapshot-signal=SIGUSR2 index.js
$ kill -USR2 1
$ ls
Heap.20190718.133405.15554.0.001.heapsnapshot
, --help
چاپ گزینه‌های خط فرمان node. خروجی این گزینه نسبت به این سند جزئیات کمتری دارد.
=file
مسیر بارگذاری داده‌های ICU را مشخص می‌کند. (بر NODE_ICU_DATA اولویت دارد.)
=module
ماژول مشخص‌شده را در زمان راه‌اندازی از پیش بارگذاری می‌کند. اگر این فلگ چندین بار ارائه شود، هر ماژول به ترتیب ظاهر شدن اجرا خواهد شد، با شروع از مواردی که در NODE_OPTIONS ارائه شده‌اند. از قواعد تفکیک ماژول‌های ECMAScript پیروی می‌کند. از --require برای بارگذاری یک ماژول CommonJS استفاده کنید. ماژول‌های پیش‌بارگذاری‌شده با --require قبل از ماژول‌های پیش‌بارگذاری‌شده با --import اجرا می‌شوند. ماژول‌ها در ریسمان اصلی و همچنین در تمام ریسمان‌های کارگر، فرایندهای انشعاب‌یافته (forked) یا خوشه‌ای پیش‌بارگذاری می‌شوند.
=type
نودجی‌اس را پیکربندی می‌کند تا ورودی --eval یا STDIN را به عنوان CommonJS یا یک ماژول ES تفسیر نماید. مقادیر معتبر عبارتند از "commonjs"، "module"، "module-typescript" و "commonjs-typescript". مقادیر "-typescript" با فلگ --no-strip-types در دسترس نیستند. حالت پیش‌فرض بدون مقدار است، یا چنانچه --no-experimental-detect-module ارسال شود "commonjs" خواهد بود. اگر --input-type ارائه نشود، Node.js سعی می‌کند نحو را با مراحل زیر تشخیص دهد:
  • اجرای ورودی به عنوان CommonJS.
  • اگر مرحله ۱ با شکست مواجه شد، ورودی را به عنوان یک ماژول ES اجرا کند.
  • اگر مرحله ۲ با SyntaxError مواجه شد، انواع (types) را حذف کند.
  • اگر مرحله ۳ با کد خطای ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX یا ERR_INVALID_TYPESCRIPT_SYNTAX با شکست مواجه شد، خطای مرحله ۲ را همراه با خطای TypeScript در پیام صادر کند، در غیر این صورت به عنوان CommonJS اجرا شود.
  • اگر مرحله ۴ با شکست مواجه شد، ورودی را به عنوان یک ماژول ES اجرا کند.
برای جلوگیری از تأخیر ناشی از چند مرحله تشخیص نحو، می‌توان از فلگ --input-type=type برای تعیین چگونگی تفسیر ورودی --eval استفاده کرد. محیط REPL از این گزینه پشتیبانی نمی‌کند. کاربرد --input-type=module همراه با --print خطا صادر می‌کند، زیرا --print از نحو ماژول ES پشتیبانی نمی‌کند.
فلگ‌های مسامحه را روی تجزیه‌کننده HTTP فعال می‌کند. این کار ممکن است تعامل‌پذیری با پیاده‌سازی‌های غیراستاندارد HTTP را ممکن سازد. هنگام فعال بودن، تجزیه‌کننده موارد زیر را می‌پذیرد:
  • مقادیر نامعتبر هدرهای HTTP.
  • نسخه‌های نامعتبر HTTP.
  • اجازه به پیام حاوی هر دو هدر Transfer-Encoding و Content-Length.
  • اجازه به داده‌های اضافه پس از پیام در صورت حضور Connection: close.
  • اجازه به کدگذاری‌های انتقال اضافی پس از ارائه chunked.
  • اجازه به استفاده از \n به عنوان جداکننده توکن به جای \r\n.
  • اجازه به عدم ارائه \r\n پس از یک قطعه (chunk).
  • اجازه به حضور فاصله‌ها پس از اندازه قطعه و قبل از \r\n.
همه موارد بالا برنامه شما را در معرض حملات قاچاق درخواست یا مسموم‌سازی قرار می‌دهند. از استفاده از این گزینه خودداری کنید.
=[[host:]port]
بازرس را روی host:port فعال کرده و در شروع اسکریپت کاربر متوقف می‌شود. مقدار پیش‌فرض host:port برابر با 127.0.0.1:9229 است. اگر پورت 0 مشخص شود، یک پورت تصادفی در دسترس استفاده خواهد شد. برای توضیحات بیشتر درباره اشکال‌زدای Node.js، بخش یکپارچه‌سازی V8 Inspector را ببینید. هشدار امنیتی زیر را در رابطه با کاربرد پارامتر host ببینید.
=[host:]port
مقدار host:port مورد استفاده در زمان فعال‌سازی بازرس را تنظیم می‌کند. هنگام فعال‌سازی بازرس با ارسال سیگنال SIGUSR1 مفید است. مگر زمانی که --disable-sigusr1 ارسال شده باشد. میزبان پیش‌فرض 127.0.0.1 است. اگر پورت 0 مشخص شود، یک پورت آزاد تصادفی استفاده خواهد شد. هشدار امنیتی زیر را در رابطه با کاربرد پارامتر host ببینید.
=stderr,http
روش‌های قرار گرفتن نشانی URL وب‌سوکت بازرس در معرض دید را مشخص می‌کند. به‌طور پیش‌فرض URL وب‌سوکت بازرس در stderr و در نقطه پایانی /json/list در نشانی http://host:port/json/list در دسترس است.
=[[host:]port]
بازرس را روی host:port فعال کرده و منتظر اتصال اشکال‌زدا می‌ماند. مقدار پیش‌فرض host:port برابر با 127.0.0.1:9229 است. اگر پورت 0 مشخص شود، یک پورت تصادفی در دسترس استفاده خواهد شد. برای توضیحات بیشتر درباره اشکال‌زدای Node.js، بخش یکپارچه‌سازی V8 Inspector را ببینید. هشدار امنیتی زیر را در رابطه با کاربرد پارامتر host ببینید.
=[[host:]port]
بازرس را روی host:port فعال می‌کند. مقدار پیش‌فرض 127.0.0.1:9229 است. اگر پورت 0 مشخص شود، یک پورت آزاد تصادفی استفاده خواهد شد. یکپارچه‌سازی بازرس V8 به ابزارهایی مانند Chrome DevTools و محیط‌های IDE اجازه می‌دهد نمونه‌های Node.js را اشکال‌زدایی و پروفایل کنند. این ابزارها از طریق یک پورت tcp به نمونه‌های Node.js متصل می‌شوند و با استفاده از پروتکل Chrome DevTools ارتباط برقرار می‌کنند. برای توضیحات بیشتر، بخش یکپارچه‌سازی V8 Inspector را ببینید.
, --interactive
محیط REPL را باز می‌کند حتی اگر stdin یک ترمینال به نظر نرسد.
تخصیص حافظه اجرایی در زمان اجرا را غیرفعال می‌کند. این گزینه ممکن است در برخی پلتفرم‌ها به دلایل امنیتی الزامی باشد. همچنین می‌تواند سطح حمله را در سایر پلتفرم‌ها کاهش دهد، اما تأثیر عملکردی آن ممکن است شدید باشد.
=file
فایل مورد استفاده برای ذخیره داده‌های localStorage. اگر فایل وجود نداشته باشد، در نخستین باری که به localStorage دسترسی پیدا شود ایجاد می‌گردد. همان فایل می‌تواند به‌طور همزمان بین چندین فرایند Node.js به اشتراک گذاشته شود.
=size
حداکثر اندازه هدرهای HTTP را بر حسب بایت مشخص می‌کند. مقدار پیش‌فرض 16 KiB است.
=percentage
حداکثر اندازه حافظه بخش قدیمی (old space) در V8 را به صورت درصدی از حافظه موجود سیستم تعیین می‌کند. این فلگ در صورت تعیین هر دو، نسبت به --max-old-space-size اولویت دارد. پارامتر percentage باید عددی بزرگتر از 0 و تا 100 باشد که درصد حافظه موجود سیستم را برای تخصیص به هیپ V8 نشان می‌دهد. نکته: این فلگ از --max-old-space-size بهره می‌برد که ممکن است در پلتفرم‌های ۳۲ بیتی به دلیل مشکلات سرریز عدد صحیح غیرقابل اعتماد باشد.
# Using 50% of available system memory
node --max-old-space-size-percentage=50 index.js

# Using 75% of available system memory
node --max-old-space-size-percentage=75 index.js
مقدار پیش‌فرض مهلت تلاش انتخاب خودکار خانواده شبکه را تعیین می‌کند. برای اطلاعات بیشتر، net.getDefaultAutoSelectFamilyAttemptTimeout() را ببینید.
شرط صدور node-addons و همچنین بارگذاری افزونه‌های بومی را غیرفعال می‌کند. هنگامی که --no-addons مشخص شود، فراخوانی process.dlopen یا فراخوانی یک افزونه بومی ++C با خطا مواجه شده و یک استثنا صادر می‌کند.
Disables the use of AsyncLocalStorage backed by AsyncContextFrame and uses the prior implementation which relied on async_hooks. The previous model is retained for compatibility with Electron and for cases where the context flow may differ. However, if a difference in flow is found please report it.
Silence deprecation warnings.
Disable using syntax detection to determine module type.
Disable exposition of Navigator API on the global scope.
از این فلگ برای غیرفعال‌سازی await در سطح بالا (top-level await) در REPL استفاده کنید.
نام مستعار قدیمی برای --no-require-module.
ماژول آزمایشی node:sqlite را غیرفعال می‌کند.
ارائه <WebSocket> در دامنه سراسری را غیرفعال می‌کند.
پشتیبانی از Web Storage را غیرفعال می‌کند.
اطلاعات اضافی در استثنای مهلک (fatal exception) که موجب خروج می‌شود را پنهان می‌کند.
بررسی‌های زمان اجرا برای async_hooks را غیرفعال می‌کند. این موارد همچنان در زمان فعال شدن پویای async_hooks به‌طور خودکار فعال خواهند شد.
ماژول‌ها را در مسیرهای سراسری مانند $HOME/.node_modules و $NODE_PATH جستجو نمی‌کند.
الگوریتم انتخاب خودکار خانواده شبکه را غیرفعال می‌کند مگر آنکه گزینه‌های اتصال صراحتاً آن را فعال کنند.
پشتیبانی از بارگذاری همگام گراف ماژول ES در require() را غیرفعال می‌کند. بخش بارگذاری ماژول‌های ECMAScript با استفاده از require() را ببینید.
حذف انواع (type-stripping) را برای فایل‌های TypeScript غیرفعال می‌کند. برای اطلاعات بیشتر، مستندات type-stripping در TypeScript را ببینید.
تمام هشدارهای فرایند (شامل هشدارهای منسوخ‌شدگی) را بی‌صدا می‌کند.
بررسی‌های اشکال‌زدایی اضافی برای نشت حافظه در بخش‌های داخلی Node.js را فعال می‌کند. این گزینه معمولاً فقط برای توسعه‌دهندگانی که خود Node.js را اشکال‌زدایی می‌کنند کاربرد دارد.
=file
یک فایل پیکربندی OpenSSL را در زمان راه‌اندازی بارگذاری می‌کند. این فایل می‌تواند یک ارائه‌دهنده FIPS در OpenSSL 3 را فعال کند یا یک بیلد OpenSSL 1.1.1 با قابلیت FIPS را پیکربندی نماید. حالت FIPS را ببینید. این گزینه بر متغیر محیطی OPENSSL_CONF اولویت دارد.
ارائه‌دهنده موروثی (legacy provider) در OpenSSL 3.0 را فعال می‌کند. برای اطلاعات بیشتر لطفاً OSSL_PROVIDER-legacy را ببینید.
فعال‌سازی بخش پیکربندی پیش‌فرض OpenSSL به نام openssl_conf جهت خوانده شدن از فایل پیکربندی OpenSSL. فایل پیکربندی پیش‌فرض openssl.cnf نام دارد اما می‌توان آن را با استفاده از متغیر محیطی OPENSSL_CONF یا با گزینه خط فرمان --openssl-config تغییر داد. مکان فایل پیکربندی پیش‌فرض OpenSSL به نحوه پیوند داده شدن OpenSSL به Node.js بستگی دارد. به اشتراک‌گذاری پیکربندی OpenSSL ممکن است پیامدهای ناخواسته‌ای داشته باشد و توصیه می‌شود از یک بخش پیکربندی مختص به Node.js استفاده کنید که nodejs_conf است و در صورت عدم استفاده از این گزینه پیش‌فرض می‌باشد.
هشدارهای منسوخ‌شدگی معلق (pending deprecation) را صادر می‌کند. هشدارهای منسوخ‌شدگی معلق عموماً با منسوخ‌شدگی زمان اجرا یکسان هستند، با این استثنای قابل توجه که به‌طور پیش‌فرض خاموش هستند و منتشر نمی‌شوند مگر اینکه یا فلگ خط فرمان --pending-deprecation یا متغیر محیطی NODE_PENDING_DEPRECATION=1 تنظیم شده باشد. هشدارهای منسوخ‌شدگی معلق برای ارائه نوعی مکانیزم گزینشی "هشدار زودهنگام" استفاده می‌شوند که توسعه‌دهندگان می‌توانند از آن برای تشخیص کاربرد ای‌پی‌آی‌های منسوخ بهره ببرند.
مدل مجوزها (Permission Model) را برای فرایند جاری فعال می‌کند. هنگام فعال بودن، مجوزهای زیر محدود می‌شوند:
  • سیستم فایل — قابل مدیریت از طریق فلگ‌های --allow-fs-read و --allow-fs-write
  • شبکه — قابل مدیریت از طریق فلگ --allow-net
  • فرایند فرزند — قابل مدیریت از طریق فلگ --allow-child-process
  • ریسمان‌های کارگر — قابل مدیریت از طریق فلگ --allow-worker
  • واسط WASI — قابل مدیریت از طریق فلگ --allow-wasi
  • افزونه‌ها — قابل مدیریت از طریق فلگ --allow-addons
  • رابط FFI — قابل مدیریت از طریق فلگ --allow-ffi
  • لودرهای OpenSSL STORE — قابل مدیریت از طریق فلگ --allow-openssl-store
حالت حسابرسی (audit mode) را برای مدل مجوزها فعال می‌کند. هنگام فعال بودن، بررسی‌های مجوز انجام می‌شوند اما دسترسی مسدود نمی‌شود — هیچ خطای ERR_ACCESS_DENIED صادر نمی‌شود. در عوض، هر نقض مجوز از طریق ماژول node:diagnostics_channel منتشر می‌شود و اجرا به‌طور عادی ادامه می‌یابد. این فلگ نیازی به تعیین --permission ندارد. فلگ‌های --allow-* در حالت حسابرسی مورد نیاز نیستند، زیرا هیچ دسترسی رد نمی‌شود. حالت حسابرسی برای پی بردن به مجوزهای مورد نیاز برنامه شما پیش از استقرار با --permission مفید است. مستندات Permission Model را برای فهرست نام کانال‌های تشخیصی و فرمت پیام‌ها ببینید. اگر هر دو فلگ --permission و --permission-audit مشخص شوند، فلگ --permission اولویت داشته و مدل مجوزها در حالت اجباری (enforce) اجرا می‌شود.
به لودر ماژول دستور می‌دهد تا هنگام حل و کش کردن ماژول‌ها، پیوندهای نمادین (symbolic links) را حفظ کند. به‌طور پیش‌فرض، هنگامی که Node.js ماژولی را از مسیری که به صورت نمادین به مکان دیگری روی دیسک پیوند دارد بارگذاری می‌کند، پیوند را دنبال کرده و از مسیر واقعی فیزیکی ماژول هم به عنوان یک شناسه و هم به عنوان مسیر ریشه برای یافتن ماژول‌های وابستگی دیگر استفاده می‌کند. در بیشتر موارد، این رفتار پیش‌فرض قابل قبول است. با این حال هنگام استفاده از پیوندهای نمادین peer dependencies، همان‌طور که در مثال زیر نشان داده شده است، رفتار پیش‌فرض باعث صدور استثنا در صورتی می‌شود که moduleA تلاش کند moduleB را به عنوان یک peer dependency فراخوانی کند:
{appDir}
 ├── app
 │   ├── index.js
 │   └── node_modules
 │       ├── moduleA -> {appDir}/moduleA
 │       └── moduleB
 │           ├── index.js
 │           └── package.json
 └── moduleA
     ├── index.js
     └── package.json
فلگ خط فرمان --preserve-symlinks به Node.js دستور می‌دهد تا به جای مسیر واقعی، از مسیر پیوند نمادین برای ماژول‌ها استفاده کند و بدین ترتیب اجازه می‌دهد peer dependencies پیوندیافته نمادین پیدا شوند. با این حال توجه داشته باشید که استفاده از --preserve-symlinks می‌تواند عوارض جانبی دیگری داشته باشد. به ویژه، ماژول‌های بومی پیوندیافته نمادین ممکن است در صورتی که از بیش از یک مکان در درخت وابستگی پیوند شده باشند در بارگذاری شکست بخورند (Node.js آن‌ها را به عنوان دو ماژول جداگانه می‌بیند و تلاش می‌کند ماژول را چندین بار بارگذاری کند که منجر به صدور استثنا می‌شود). فلگ --preserve-symlinks روی ماژول اصلی اعمال نمی‌شود که این اجازه می‌دهد node --preserve-symlinks node_module/.bin/<foo>; کار کند. برای اعمال همین رفتار برای ماژول اصلی، از --preserve-symlinks-main نیز استفاده کنید.
به لودر ماژول دستور می‌دهد تا هنگام حل و کش کردن ماژول اصلی (require.main)، پیوندهای نمادین را حفظ کند. این فلگ وجود دارد تا ماژول اصلی بتواند رفتاری مشابه با آنچه --preserve-symlinks برای همه ایمپورت‌های دیگر فراهم می‌کند داشته باشد؛ اما برای سازگاری عقروعلی با نسخه‌های قدیمی‌تر Node.js، این‌ها فلگ‌های جداگانه‌ای هستند. گزینه --preserve-symlinks-main متضمن --preserve-symlinks نیست؛ زمانی که تمایلی به دنبال کردن پیوندهای نمادین پیش از حل مسیرهای نسبی ندارید، از --preserve-symlinks-main علاوه بر --preserve-symlinks استفاده کنید. برای اطلاعات بیشتر --preserve-symlinks را ببینید.
, --print script
مشابه -e است اما نتیجه را چاپ می‌کند.
تولید خروجی پروفایلر V8.
پردازش خروجی پروفایلر V8 تولیدشده با استفاده از گزینه --prof در V8.
=file
هشدارهای فرایند را به جای چاپ در stderr در فایل ارائه‌شده می‌نویسد. اگر فایل وجود نداشته باشد ایجاد می‌شود، و اگر وجود داشته باشد به انتهای آن افزوده خواهد شد. اگر هنگام تلاش برای نوشتن هشدار در فایل خطایی رخ دهد، هشدار به جای آن در stderr نوشته خواهد شد. نام file می‌تواند یک مسیر مطلق باشد. اگر نباشد، دایرکتوری پیش‌فرضی که در آن نوشته می‌شود توسط گزینه خط فرمان --diagnostic-dir کنترل می‌شود.
گزارش‌ها را در فرمتی فشرده به صورت JSON تک‌خطی می‌نویسد که برای سیستم‌های پردازش لاگ نسبت به فرمت چندخطی پیش‌فرض (طراحی‌شده برای خواندن انسان) راحت‌تر قابل مصرف است.
=directory, --report-directory=directory
مکانی که گزارش در آن تولید خواهد شد.
هنگامی که --report-exclude-env ارسال شود، گزارش تشخیصی تولیدشده حاوی داده‌های environmentVariables نخواهد بود.
حذف header.networkInterfaces از گزارش تشخیصی. به‌طور پیش‌فرض این گزینه تنظیم نشده است و رابط‌های شبکه گنجانده می‌شوند.
=filename
نام فایلی که گزارش در آن نوشته خواهد شد. اگر نام فایل روی 'stdout' یا 'stderr' تنظیم شود، گزارش به ترتیب در stdout یا stderr فرایند نوشته می‌شود.
تولید گزارش را در هنگام بروز خطاهای مهلک (خطاهای داخلی درون محیط اجرای Node.js مانند اتمام حافظه) که منجر به توقف برنامه می‌شوند فعال می‌کند. برای بررسی عناصر تشخیصی مختلف مانند هیپ، پشته، وضعیت حلقه رویداد، مصرف منابع و غیره جهت تحلیل خطای مهلک بسیار مفید است.
تولید گزارش را با دریافت سیگنال مشخص‌شده (یا از پیش تعریف‌شده) توسط فرایند در حال اجرای Node.js فعال می‌کند. سیگنال فعال‌کننده گزارش از طریق --report-signal تعیین می‌شود.
=signal
سیگنال تولید گزارش را تنظیم یا بازنشانی می‌کند (در ویندوز پشتیبانی نمی‌شود). سیگنال پیش‌فرض SIGUSR2 است.
تولید گزارش را در هنگام خروج فرایند به دلیل یک استثنای مدیریت‌نشده (uncaught exception) فعال می‌کند. برای بررسی پشته جاوااسکریپت همراه با پشته بومی و سایر داده‌های محیط اجرا مفید است.
, --require module
ماژول مشخص‌شده را در زمان راه‌اندازی از پیش بارگذاری می‌کند. از قوانین حل ماژول در require() پیروی می‌کند. پارامتر module می‌تواند یک مسیر به فایل یا نام یک ماژول node باشد. ماژول‌های پیش‌بارگذاری‌شده با --require پیش از ماژول‌های پیش‌بارگذاری‌شده با --import اجرا می‌شوند. ماژول‌ها در ریسمان اصلی و همچنین در تمام ریسمان‌های کارگر، فرایندهای انشعاب‌یافته (forked) یا خوشه‌ای پیش‌بارگذاری می‌شوند.
یک دستور مشخص را از شیء "scripts" در package.json اجرا می‌کند. اگر "command" ناموجود ارائه شود، اسکریپت‌های موجود را فهرست خواهد کرد. گزینه --run تا دایرکتوری ریشه بالا می‌رود تا یک فایل package.json را برای اجرای دستور از آن پیدا کند. گزینه --run مسیر ./node_modules/.bin را به ازای هر والدِ دایرکتوری جاری به PATH اضافه می‌کند تا باینری‌ها از پوشه‌های مختلفی که چندین دایرکتوری node_modules دارند اجرا شوند، چنانچه ancestor-folder/node_modules/.bin یک دایرکتوری باشد. گزینه --run دستور را در دایرکتوری حاوی package.json مرتبط اجرا می‌کند. برای مثال، دستور زیر اسکریپت test موجود در package.json پوشه جاری را اجرا خواهد کرد:
$ node --run test
همچنین می‌توانید آرگومان‌هایی را به دستور ارسال کنید. هر آرگومانی پس از -- به اسکریپت ضمیمه خواهد شد:
$ node --run test -- --verbose
=n
هنگام استفاده از --secure-heap، فلگ --secure-heap-min حداقل تخصیص را از هیپ امن مشخص می‌کند. حداقل مقدار 2 است. حداکثر مقدار کوچکترِ بین --secure-heap یا 2147483647 است. مقدار ارائه‌شده باید توانی از دو باشد.
=n
یک هیپ امن OpenSSL با اندازه n بایت را مقداردهی اولیه می‌کند. هنگام مقداردهی اولیه، هیپ امن برای انواع خاصی از تخصیص‌ها درون OpenSSL در حین تولید کلید و سایر عملیات‌ها استفاده می‌شود. این برای مثال جهت جلوگیری از نشت اطلاعات حساس ناشی از سرریز یا زیرریز اشاره‌گرها مفید است. هیپ امن اندازه ثابتی دارد و در زمان اجرا قابل تغییر اندازه نیست، بنابراین در صورت استفاده، مهم است که هیپ به اندازه کافی بزرگ انتخاب شود تا همه کاربردهای برنامه را پوشش دهد. اندازه هیپ ارائه‌شده باید توانی از دو باشد. هر مقداری کمتر از 2 هیپ امن را غیرفعال می‌کند. هیپ امن به‌طور پیش‌فرض غیرفعال است. هیپ امن در ویندوز در دسترس نیست. برای جزئیات بیشتر CRYPTO_secure_malloc_init را ببینید.
=path
هنگامی که همراه با --build-snapshot استفاده شود، --snapshot-blob مسیری را مشخص می‌کند که بلاب اسنپ‌شات تولیدشده در آن نوشته می‌شود. در صورت عدم تعیین، بلاب تولیدشده در snapshot.blob در دایرکتوری کاری جاری نوشته خواهد شد. هنگامی که بدون --build-snapshot استفاده شود، --snapshot-blob مسیری را به بلابی مشخص می‌کند که برای بازیابی وضعیت برنامه استفاده می‌شود. هنگام بارگذاری اسنپ‌شات، Node.js بررسی می‌کند که:
  • نسخه، معماری و پلتفرم باینری در حال اجرای Node.js دقیقاً مشابه باینری تولیدکننده اسنپ‌شات باشد.
  • فلگ‌های V8 و ویژگی‌های CPU با باینری تولیدکننده اسنپ‌شات سازگار باشند.
اگر مطابقت نداشته باشند، Node.js از بارگذاری اسنپ‌شات خودداری کرده و با کد وضعیت 1 خارج می‌شود.
اجراکننده تست خط فرمان Node.js را آغاز می‌کند. این فلگ را نمی‌توان با --watch-path، --check، --eval، --interactive یا بازرس ترکیب کرد. برای جزئیات بیشتر، مستندات اجرای آزمایش‌ها از خط فرمان را ببینید.
حداکثر تعداد فایل‌های آزمایشی که CLI اجراکننده آزمون به‌طور همزمان اجرا خواهد کرد. اگر --test-isolation روی 'none' تنظیم شده باشد، این فلگ نادیده گرفته شده و همایندی یک خواهد بود. در غیر این صورت، همایندی به‌طور پیش‌فرض برابر با os.availableParallelism() - 1 است.
=threshold
درصد حداقلی از شاخه‌های پوشش‌داده‌شده را الزامی می‌کند. اگر پوشش کد به آستانه مشخص‌شده نرسد، فرایند با کد 1 خارج خواهد شد.
Excludes specific files from code coverage using a glob pattern, which can match both absolute and relative file paths. This option may be specified multiple times to exclude multiple glob patterns. If both --test-coverage-exclude and --test-coverage-include are provided, files must meet both criteria to be included in the coverage report. By default all the matching test files are excluded from the coverage report. Specifying this option will override the default behavior.
=threshold
Require a minimum percent of covered functions. If code coverage does not reach the threshold specified, the process will exit with code 1.
Includes specific files in code coverage using a glob pattern, which can match both absolute and relative file paths. This option may be specified multiple times to include multiple glob patterns. If both --test-coverage-exclude and --test-coverage-include are provided, files must meet both criteria to be included in the coverage report.
Includes source files that were never loaded by the test run in the coverage report, where they are reported as having zero coverage. Candidate files are searched for in the current working directory, and are subject to the same --test-coverage-include and --test-coverage-exclude filtering as the rest of the report.
=threshold
Require a minimum percent of covered lines. If code coverage does not reach the threshold specified, the process will exit with code 1.
Configures the test runner to exit the process once all known tests have finished executing even if the event loop would otherwise remain active.
=module
Specify a module that will be evaluated before all tests are executed and can be used to setup global state or fixtures for tests. See the documentation on global setup and teardown for more details.
=mode
نوع جداسازی آزمایش مورد استفاده در test runner را پیکربندی می‌کند. هنگامی که mode برابر با 'process' باشد، هر فایل تست در یک فرایند فرزند جداگانه اجرا می‌شود. هنگامی که mode برابر با 'none' باشد، تمام فایل‌های تست در همان فرایند اجراکننده آزمایش اجرا می‌شوند. حالت پیش‌فرض جداسازی 'process' است. این فلگ در صورت عدم وجود فلگ --test نادیده گرفته می‌شود. برای اطلاعات بیشتر بخش مدل اجرای test runner را ببینید.
یک عبارت باقاعده که اجراکننده آزمایش را پیکربندی می‌کند تا فقط آزمایش‌هایی را اجرا کند که نام آن‌ها با الگوی ارائه‌شده مطابقت دارد. مستندات فیلتر کردن آزمایش‌ها بر اساس نام را برای جزئیات بیشتر ببینید. اگر هر دو گزینه --test-name-pattern و --test-skip-pattern ارائه شوند، آزمایش‌ها برای اجرا باید هر دو شرط را برآورده کنند.
اجراکننده آزمایش را پیکربندی می‌کند تا فقط آزمایش‌های سطح بالایی را اجرا کند که گزینه only در آن‌ها تنظیم شده است. این فلگ هنگامی که جداسازی تست غیرفعال باشد لازم نیست.
مقدار seed مورد استفاده برای تصادفی‌سازی ترتیب اجرای آزمایش‌ها را تنظیم می‌کند. این مورد هم بر ترتیب اجرای فایل‌های آزمایشی و هم آزمایش‌های صف‌بندی‌شده درون هر فایل اعمال می‌شود. ارائه این فلگ تصادفی‌سازی را حتی بدون --test-randomize به‌طور ضمنی فعال می‌کند. مقدار باید یک عدد صحیح بین 0 و 4294967295 باشد. این فلگ را نمی‌توان همراه با --watch یا --test-rerun-failures استفاده کرد.
ترتیب اجرای آزمایش‌ها را تصادفی می‌کند. این مورد هم بر ترتیب اجرای فایل‌های آزمایشی و هم آزمایش‌های صف‌بندی‌شده درون هر فایل اعمال می‌شود. این می‌تواند به تشخیص آزمایش‌هایی که به وضعیت مشترک یا ترتیب اجرا وابسته هستند کمک کند. مقدار seed مورد استفاده برای تصادفی‌سازی در خلاصه آزمایش چاپ می‌شود و می‌تواند با --test-random-seed مجدداً استفاده گردد. برای رفتار تفصیلی و مثال‌ها، تصادفی‌سازی ترتیب اجرای آزمایش‌ها را ببینید. این فلگ را نمی‌توان همراه با --watch یا --test-rerun-failures استفاده کرد.
یک گزارش‌دهنده آزمایش برای استفاده در حین اجرای تست‌ها. مستندات گزارش‌دهنده‌های آزمون را برای جزئیات بیشتر ببینید.
مقصد گزارش‌دهنده آزمایش متناظر. مستندات گزارش‌دهنده‌های آزمون را برای جزئیات بیشتر ببینید.
مسیری به یک فایل که به test runner اجازه می‌دهد وضعیت مجموعه آزمایش را بین اجراها ذخیره کند. اجراکننده آزمون از این فایل برای تعیین اینکه کدام آزمایش‌ها قبلاً موفق یا ناموفق بوده‌اند استفاده خواهد کرد، که امکان اجرای مجدد آزمایش‌های ناموفق بدون نیاز به اجرای مجدد کل مجموعه آزمایش را فراهم می‌سازد. اجراکننده آزمایش در صورت عدم وجود این فایل، آن را ایجاد خواهد کرد. مستندات اجرای مجدد تست‌ها را برای جزئیات بیشتر ببینید.
تکه (shard) مجموعه آزمون برای اجرا در قالب <index>/<total>، که در آن:
  • index یک عدد صحیح مثبت، شاخص بخش‌های تقسیم‌شده است.
  • total یک عدد صحیح مثبت، مجموع بخش‌های تقسیم‌شده است.
این دستور تمام فایل‌های آزمایشی را به total بخش مساوی تقسیم کرده و تنها مواردی را که در بخش index قرار می‌گیرند اجرا می‌کند. برای مثال، جهت تقسیم مجموعه آزمایش خود به سه بخش، از دستور زیر استفاده کنید:
node --test --test-shard=1/3
node --test --test-shard=2/3
node --test --test-shard=3/3
یک عبارت باقاعده که اجراکننده آزمون را پیکربندی می‌کند تا از آزمایش‌هایی که نام آن‌ها با الگوی ارائه‌شده مطابقت دارد صرف‌نظر کند. مستندات فیلتر کردن آزمایش‌ها بر اساس نام را برای جزئیات بیشتر ببینید. اگر هر دو گزینه --test-name-pattern و --test-skip-pattern ارائه شوند، آزمایش‌ها برای اجرا باید هر دو شرط را برآورده کنند.
تعداد میلی‌ثانیه‌هایی که پس از آن اجرای تست شکست می‌خورد. در صورت عدم تعیین، زیرتست‌ها این مقدار را از والد خود به ارث می‌برند. مقدار پیش‌فرض Infinity است.
فایل‌های اسنپ‌شات مورد استفاده توسط اجراکننده آزمایش برای تست اسنپ‌شات را مجدداً تولید می‌کند.
پرتاب خطا برای هشدارهای منسوخ‌شدگی.
=title
تنظیم process.title در زمان راه‌اندازی.
=list
یک فهرست جایگزین رمزهای پیش‌فرض TLS را مشخص می‌کند. نیازمند آن است که Node.js با پشتیبانی از رمزنگاری (پیش‌فرض) بیلد شده باشد.
=file
داده‌های کلید TLS را در یک فایل ثبت می‌کند. داده‌های کلید در قالب SSLKEYLOGFILE مربوط به NSS هستند و می‌توانند توسط نرم‌افزارهایی (مانند Wireshark) برای رمزگشایی ترافیک TLS استفاده شوند.
تنظیم tls.DEFAULT_MAX_VERSION به 'TLSv1.2'. برای غیرفعال‌سازی پشتیبانی از TLSv1.3 استفاده می‌شود.
تنظیم پیش‌فرض tls.DEFAULT_MAX_VERSION به 'TLSv1.3'. برای فعال‌سازی پشتیبانی از TLSv1.3 استفاده می‌شود.
تنظیم پیش‌فرض tls.DEFAULT_MIN_VERSION به 'TLSv1'. برای سازگاری با کلاینت‌ها یا سرورهای قدیمی TLS استفاده می‌شود.
تنظیم پیش‌فرض tls.DEFAULT_MIN_VERSION به 'TLSv1.1'. برای سازگاری با کلاینت‌ها یا سرورهای قدیمی TLS استفاده می‌شود.
تنظیم پیش‌فرض tls.DEFAULT_MIN_VERSION به 'TLSv1.2'. این مقدار پیش‌فرض برای نسخه‌های 12.x و بالاتر است، اما گزینه برای سازگاری با نسخه‌های قدیمی‌تر Node.js پشتیبانی می‌شود.
تنظیم پیش‌فرض tls.DEFAULT_MIN_VERSION به 'TLSv1.3'. برای غیرفعال‌سازی پشتیبانی از TLSv1.2 که به اندازه TLSv1.3 امن نیست استفاده می‌شود.
چاپ ردگیری پشته برای هشدارهای منسوخ‌شدگی.
اطلاعات مربوط به هرگونه دسترسی به متغیرهای محیطی در نمونه جاری Node.js را در stderr چاپ می‌کند، از جمله:
  • خواندن‌هایی از متغیرهای محیطی که Node.js به‌طور داخلی انجام می‌دهد.
  • نوشتن‌هایی به صورت process.env.KEY = "SOME VALUE".
  • خواندن‌هایی به صورت process.env.KEY.
  • تعریف‌هایی به صورت Object.defineProperty(process.env, 'KEY', {...}).
  • پرس‌وجوهایی به صورت Object.hasOwn(process.env, 'KEY')، process.env.hasOwnProperty('KEY') یا 'KEY' in process.env.
  • حذف‌هایی به صورت delete process.env.KEY.
  • شمارش‌هایی به صورت ...process.env یا Object.keys(process.env).
تنها نام متغیرهای محیطی که به آن‌ها دسترسی پیدا شده چاپ می‌شوند. مقادیر چاپ نخواهند شد. برای چاپ ردگیری پشته دسترسی، از --trace-env-js-stack یا --trace-env-native-stack استفاده کنید.
علاوه بر عملکرد --trace-env، ردگیری پشته جاوااسکریپتِ دسترسی را نیز چاپ می‌کند.
علاوه بر عملکرد --trace-env، ردگیری پشته بومی دسترسی را نیز چاپ می‌کند.
فهرستی جداشده با کاما از دسته‌هایی که باید هنگام فعال بودن ردگیری رویدادها با استفاده از --trace-events-enabled ردگیری شوند.
رشته الگوی مشخص‌کننده مسیر فایل برای داده‌های رویداد ردگیری؛ از ${rotation} و ${pid} پشتیبانی می‌کند.
جمع‌آوری اطلاعات ردگیری رویدادها را فعال می‌کند.
هر زمان که یک محیط به صورت پیشگیرانه خارج شود، یعنی با فراخوانی process.exit()، یک ردگیری پشته چاپ می‌کند.
=mode
اطلاعات مربوط به بارگذاری ماژول‌های ECMAScript با استفاده از require() را چاپ می‌کند. هنگامی که mode برابر با all باشد، تمام کاربردها چاپ می‌شوند. هنگامی که mode برابر با no-node-modules باشد، استفاده‌های پوشه node_modules مستثنی می‌شوند.
یک ردگیری پشته هنگام دریافت SIGINT چاپ می‌کند.
هر زمان که ورودی/خروجی همگام پس از نخستین دور حلقه رویداد تشخیص داده شود، یک ردگیری پشته چاپ می‌کند.
اطلاعات ردگیری بسته‌های TLS را در stderr چاپ می‌کند. می‌توان از آن برای اشکال‌زدایی مشکلات اتصال TLS استفاده کرد.
چاپ ردگیری پشته برای استثناهای مدیریت‌نشده؛ معمولاً ردگیری پشته مرتبط با ایجاد یک Error چاپ می‌شود، در حالی که این گزینه باعث می‌شود Node.js همچنین ردگیری پشته مرتبط با پرتاب مقدار را نیز چاپ کند (که لزوماً نیازی نیست یک نمونه از Error باشد). فعال‌سازی این گزینه ممکن است تأثیر منفی بر رفتار زباله‌روبی بگذارد.
چاپ ردگیری پشته برای هشدارهای فرایند (شامل هشدارهای منسوخ‌شدگی).
ردگیری تخصیص اشیاء هیپ برای اسنپ‌شات‌های هیپ.
=mode
استفاده از این فلگ اجازه می‌دهد تا تعیین کنید هنگام بروز یک ردشدن مدیریت‌نشده (unhandled rejection) چه اتفاقی بیفتد. یکی از حالت‌های زیر را می‌توان انتخاب کرد:
  • throw: انتشار unhandledRejection. اگر این قلاب تنظیم نشده باشد، ردشدن مدیریت‌نشده را به عنوان یک استثنای مدیریت‌نشده مطرح می‌کند. این حالت پیش‌فرض است.
  • strict: ردشدن مدیریت‌نشده را به عنوان یک استثنای مدیریت‌نشده مطرح می‌کند. اگر استثنا مدیریت شود، unhandledRejection منتشر می‌شود.
  • warn: همیشه یک هشدار را تحریک می‌کند، چه قلاب unhandledRejection تنظیم شده باشد چه نباشد، اما هشدار منسوخ‌شدگی را چاپ نمی‌کند.
  • warn-with-error-code: انتشار unhandledRejection. اگر این قلاب تنظیم نشده باشد، یک هشدار صادر کرده و کد خروج فرایند را به 1 تنظیم می‌کند.
  • none: تمام هشدارها را بی‌صدا می‌کند.
اگر یک ردشدن در طول مرحله بارگذاری ایستای ماژول ES در نقطه ورود خط فرمان رخ دهد، همیشه آن را به عنوان یک استثنای مدیریت‌نشده مطرح خواهد کرد.
, --use-openssl-ca
استفاده از مخزن CA موزیلا ارائه‌شده همراه با نسخه جاری Node.js یا استفاده از مخزن پیش‌فرض CA در OpenSSL. مخزن پیش‌فرض در زمان بیلد قابل انتخاب است. مخزن CA همراه با برنامه، آن‌گونه که توسط Node.js عرضه می‌شود، یک اسنپ‌شات از مخزن CA موزیلا است که در زمان انتشار تثبیت شده است. این در تمام پلتفرم‌های پشتیبانی‌شده یکسان است. استفاده از مخزن OpenSSL اجازه اصلاحات خارجی در مخزن را می‌دهد. برای بیشتر توزیع‌های لینوکس و BSD، این مخزن توسط نگه‌دارندگان توزیع و مدیران سیستم نگهداری می‌شود. مکان مخزن CA در OpenSSL به پیکربندی کتابخانه OpenSSL وابسته است اما می‌توان آن را در زمان اجرا با استفاده از متغیرهای محیطی تغییر داد. بخش‌های SSL_CERT_DIR و SSL_CERT_FILE را ببینید.
هنگام فعال بودن، Node.js متغیرهای محیطی HTTP_PROXY، HTTPS_PROXY و NO_PROXY را در حین راه‌اندازی تجزیه کرده و درخواست‌ها را از طریق پروکسی مشخص‌شده هدایت می‌کند. تنها با پروکسی‌هایی استفاده کنید که برای استقرار مورد اعتماد و مجاز هستند. پشتیبانی از پروکسی برای دسترسی به شبکه‌های خارجی از طریق سرورهای پروکسی مجاز در نظر گرفته شده است، برای مثال هنگامی که فایروال به آن نیاز دارد. این برای پنهان کردن ترافیک یا دور زدن خط‌مشی شبکه نیست. بخش Built-in Proxy Support را ببینید. این معادل با تنظیم متغیر محیطی NODE_USE_ENV_PROXY=1 است. هنگام تنظیم هر دو، گزینه --use-env-proxy اولویت دارد.
=mode
نگاشت مجدد کد استاتیک Node.js به صفحات بزرگ حافظه در زمان راه‌اندازی. در صورت پشتیبانی در سیستم هدف، این باعث می‌شود که کد استاتیک Node.js به جای صفحات 4 KiB به صفحات 2 MiB منتقل شود. مقادیر زیر برای mode معتبر هستند:
  • off: هیچ نگاشتی انجام نخواهد شد. این حالت پیش‌فرض است.
  • on: در صورت پشتیبانی سیستم‌عامل، نگاشت انجام خواهد شد. عدم موفقیت در نگاشت نادیده گرفته شده و پیامی در خطای استاندارد چاپ می‌شود.
  • silent: در صورت پشتیبانی سیستم‌عامل، نگاشت انجام خواهد شد. عدم موفقیت در نگاشت نادیده گرفته شده و گزارش نخواهد شد.
نودجی‌اس از گواهی‌های CA مورد اعتماد موجود در مخزن سیستم همراه با گزینه --use-bundled-ca و متغیر محیطی NODE_EXTRA_CA_CERTS استفاده می‌کند. در پلتفرم‌هایی غیر از ویندوز و macOS، این گزینه گواهی‌ها را از دایرکتوری و فایل مورد اعتماد توسط OpenSSL بارگذاری می‌کند، مشابه با --use-openssl-ca، با این تفاوت که پس از نخستین بارگذاری گواهی‌ها را کش می‌کند. در ویندوز و macOS، خط‌مشی اعتماد به گواهی مشابه خط‌مشی Chromium برای گواهی‌های محلی مورد اعتماد است، اما با تفاوت‌هایی: در macOS تنظیمات زیر رعایت می‌شوند:
  • دسته‌کلیدهای پیش‌فرض و سیستمی (Default and System Keychains).Bl -bullet
  • اعتماد:.Bl -bullet
  • هر گواهی که فلگ “When using this certificate” آن روی “Always Trust” تنظیم شده باشد، یا
  • هر گواهی که فلگ “Secure Sockets Layer (SSL)” آن روی “Always Trust” تنظیم شده باشد.
گواهی همچنین باید معتبر بوده و "X.509 Basic Policy" آن روی “Always Trust” تنظیم باشد.

در ویندوز تنظیمات زیر رعایت می‌شوند:

  • ماشین محلی (قابل دسترسی از طریق certlm.msc).Bl -bullet
  • اعتماد:.Bl -bullet
  • مراجع صدور گواهی ریشه معتمد (Trusted Root Certification Authorities)
  • افراد معتمد (Trusted People)
  • Enterprise Trust -> Enterprise -> Trusted Root Certification Authorities
  • Enterprise Trust -> Enterprise -> Trusted People
  • Enterprise Trust -> Group Policy -> Trusted Root Certification Authorities
  • Enterprise Trust -> Group Policy -> Trusted People

کاربر جاری (قابل دسترسی از طریق certmgr.msc).Bl -bullet
اعتماد:.Bl -bullet
مراجع صدور گواهی ریشه معتمد
Enterprise Trust -> Group Policy -> Trusted Root Certification Authorities در ویندوز و macOS، پیش از استفاده از گواهی‌های معتمد، Node.js بررسی می‌کند که تنظیمات کاربر برای آن‌ها مانع از احراز هویت سرور TLS نباشد. نودجی‌اس در حال حاضر از عدم اعتماد/ابطال گواهی‌ها از منبعی دیگر بر اساس تنظیمات سیستم پشتیبانی نمی‌کند. در سایر سیستم‌ها، Node.js گواهی‌ها را از فایل گواهی پیش‌فرض (معمولاً /etc/ssl/cert.pem) و دایرکتوری گواهی پیش‌فرض (معمولاً /etc/ssl/certs) که نسخه OpenSSL لینک‌شده به Node.js می‌شناسد بارگذاری می‌کند. این رفتار معمولاً با عرف توزیع‌های عمده لینوکس و سایر سیستم‌های شبه‌یونیکس سازگار است. اگر متغیرهای محیطی بازنویس‌کننده OpenSSL (معمولاً SSL_CERT_FILE و SSL_CERT_DIR، بسته به پیکربندی OpenSSL لینک‌شده به Node.js) تنظیم شده باشند، مسیرهای مشخص‌شده به جای آن برای بارگذاری گواهی‌ها استفاده می‌شوند. این متغیرهای محیطی می‌توانند به عنوان راه‌حل‌های موقت در صورتی که مسیرهای متداول به دلیلی با پیکربندی سیستم کاربر ناسازگار باشند، استفاده شوند.
چاپ گزینه‌های خط فرمان V8.
اندازه مخزن ریسمان‌های V8 را تنظیم می‌کند که برای تخصیص کارهای پس‌زمینه استفاده خواهد شد. اگر روی 0 تنظیم شود، Node.js اندازه مناسب مخزن ریسمان‌ها را بر اساس برآوردی از میزان موازی‌سازی انتخاب خواهد کرد. میزان موازی‌سازی به تعداد محاسباتی اشاره دارد که می‌توانند به‌طور همزمان در یک ماشین معین انجام شوند. به‌طور کلی، این مقدار همان تعداد CPUها است، اما ممکن است در محیط‌هایی مانند ماشین‌های مجازی یا کانتینرها تفاوت داشته باشد.
چاپ نسخه node.
راه‌اندازی Node.js در حالت نظارت (watch mode). هنگامی که در حالت نظارت است، تغییرات در فایل‌های تحت نظارت موجب راه‌اندازی مجدد فرایند Node.js می‌شود. به‌طور پیش‌فرض، حالت نظارت نقطه ورود و هر ماژول فراخوانی‌شده یا واردشده را تحت نظارت قرار می‌دهد. از --watch-path برای تعیین مسیرهای تحت نظارت استفاده کنید. این فلگ را نمی‌توان با --check، --eval، --interactive یا REPL ترکیب کرد. نکته: فلگ --watch نیازمند یک مسیر فایل به عنوان آرگومان است و با --run یا ورودی اسکریپت درون‌خطی ناسازگار است، زیرا --run اولویت داشته و حالت نظارت را نادیده می‌گیرد. اگر هیچ فایلی ارائه نشود، Node.js با کد وضعیت 9 خارج خواهد شد.
node --watch index.js
سیگنال ارسال‌شده به فرایند در زمان راه‌اندازی مجدد در حالت نظارت را سفارشی‌سازی می‌کند.
node --watch --watch-kill-signal SIGINT test.js
راه‌اندازی Node.js در حالت نظارت و تعیین مسیرهای مورد نظر برای نظارت. هنگامی که در حالت نظارت است، تغییرات در مسیرهای تحت نظارت موجب راه‌اندازی مجدد فرایند Node.js می‌شود. این کار نظارت بر ماژول‌های require یا import شده را حتی در ترکیب با --watch خاموش می‌کند. این فلگ را نمی‌توان با --check، --eval، --interactive، --test یا REPL ترکیب کرد. نکته: استفاده از --watch-path به‌طور ضمنی --watch را فعال می‌کند که نیازمند یک مسیر فایل است و با --run ناسازگار است، زیرا --run اولویت داشته و حالت نظارت را نادیده می‌گیرد.
node --watch-path=./src --watch-path=./tests index.js
این گزینه فقط در macOS و ویندوز پشتیبانی می‌شود. استثنای ERR_FEATURE_UNAVAILABLE_ON_PLATFORM هنگامی که گزینه در پلتفرمی که از آن پشتیبانی نمی‌کند استفاده شود، صادر خواهد شد.
پاک کردن کنسول را هنگامی که حالت نظارت فرایند را دوباره راه‌اندازی می‌کند غیرفعال می‌سازد.
node --watch --watch-preserve-output test.js
به‌طور خودکار تمام نمونه‌های تازه تخصیص‌یافتهٔ Buffer را با صفر پر می‌کند.

[1, 2, 3]
متغیر محیطی FORCE_COLOR برای فعال‌سازی خروجی رنگی ANSI استفاده می‌شود. مقدار می‌تواند یکی از موارد زیر باشد:
  • 1، true یا رشته خالی '' برای پشتیبانی از ۱۶ رنگ،
  • 2 برای پشتیبانی از ۲۵۶ رنگ، یا
  • 3 برای پشتیبانی از ۱۶ میلیون رنگ.
هنگامی که FORCE_COLOR استفاده شود و روی یک مقدار پشتیبانی‌شده تنظیم گردد، هر دو متغیر محیطی NO_COLOR و NODE_DISABLE_COLORS نادیده گرفته می‌شوند. هر مقدار دیگری منجر به غیرفعال شدن خروجی رنگی خواهد شد.
dir
کش کامپایل ماژول را برای نمونه Node.js فعال می‌کند. برای جزئیات، مستندات کش کامپایل ماژول را ببینید.
1
هنگامی که روی 1 تنظیم شود، کش کامپایل ماژول می‌تواند در مکان‌های دایرکتوری مختلف استفاده مجدد شود تا زمانی که ساختار ماژول نسبت به دایرکتوری کش یکسان بماند، و توسط هر کاربری (زیردایرکتوری کش با شناسه کاربر ایجادکننده پسوندگذاری نمی‌شود).
1
هنگامی که روی 1 تنظیم شود، کش کامپایل ماژول فقط ورودی‌های موجود را از دایرکتوری خود می‌خواند: چیزی در آن نوشته نمی‌شود و در صورت عدم وجود ایجاد نخواهد شد.
module[,…]
فهرستی جداشده با ',' از ماژول‌های هسته که باید اطلاعات اشکال‌زدایی را چاپ کنند.
module[,…]
فهرستی جداشده با ',' از ماژول‌های هسته ++C که باید اطلاعات اشکال‌زدایی را چاپ کنند.
1
هنگامی که تنظیم شود، از رنگ‌ها در REPL استفاده نخواهد شد.
1
کش کامپایل ماژول را برای نمونه Node.js غیرفعال می‌کند. برای جزئیات، مستندات کش کامپایل ماژول را ببینید.
file
هنگامی که تنظیم شود، مراجع صدور گواهی ریشه شناخته‌شده (مانند VeriSign) با گواهی‌های اضافی در file گسترش می‌یابند. فایل باید شامل یک یا چند گواهی معتمد در قالب PEM باشد. در صورتی که فایل مفقود یا ناقص باشد، یک پیام (یک‌بار) با process.emitWarning() صادر می‌شود، اما سایر خطاها نادیده گرفته خواهند شد. نه گواهی‌های شناخته‌شده و نه گواهی‌های اضافی زمانی که ویژگی ca در گزینه‌ها صراحتاً برای یک کلاینت یا سرور TLS یا HTTPS مشخص شده باشد استفاده نمی‌شوند. این متغیر محیطی هنگامی که node به صورت setuid root اجرا شود یا دارای قابلیت‌های فایل لینوکس باشد نادیده گرفته می‌شود. متغیر محیطی NODE_EXTRA_CA_CERTS فقط هنگام راه‌اندازی اولیه فرایند Node.js خوانده می‌شود. تغییر مقدار در زمان اجرا با استفاده از process.env.NODE_EXTRA_CA_CERTS هیچ تأثیری بر فرایند جاری ندارد.
file
مسیر داده برای داده‌های ICU (شیء Intl). در صورت کامپایل با پشتیبانی small-icu، داده‌های پیوندیافته را گسترش می‌دهد.
1
هنگامی که روی 1 تنظیم شود، هشدارهای فرایند بی‌صدا می‌شوند.
options...
فهرستی از گزینه‌های خط فرمان که با فاصله جدا شده‌اند. مقادیر options... قبل از گزینه‌های خط فرمان تفسیر می‌شوند، بنابراین گزینه‌های خط فرمان بر هر چیزی در options... اولویت خواهند داشت یا پس از آن اعمال می‌شوند. Node.js در صورت استفاده از گزینه‌ای که در محیط مجاز نیست، مانند -p یا یک فایل اسکریپت، با خطا خارج می‌شود. اگر مقدار یک گزینه حاوی فاصله باشد، می‌توان با استفاده از علامت نقل‌قول دوگانه آن را اسکیپ کرد:
NODE_OPTIONS='--require "./my path/file.js"'
یک فلگ تک‌گانه ارسال‌شده به عنوان گزینه خط فرمان بر همان فلگ ارسال‌شده در NODE_OPTIONS اولویت خواهد داشت:
# The inspector will be available on port 5555
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555
فلگی که می‌تواند چندین بار ارسال شود، طوری در نظر گرفته می‌شود که گویی نمونه‌های NODE_OPTIONS آن ابتدا ارسال شده‌اند و سپس نمونه‌های خط فرمان آن:
NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# is equivalent to:
node --require "./a.js" --require "./b.js"
گزینه‌های مجاز Node.js در فهرست زیر آمده‌اند. اگر گزینه‌ای از هر دو نوع --XX و --no-XX پشتیبانی کند، هر دو پشتیبانی می‌شوند اما فقط یکی در فهرست زیر گنجانده شده است:
  • --allow-addons
  • --allow-child-process
  • --allow-ffi
  • --allow-fs-read
  • --allow-fs-write
  • --allow-inspector
  • --allow-net
  • --allow-openssl-store
  • --allow-wasi
  • --allow-worker
  • --conditions, -C
  • --cpu-prof-dir
  • --cpu-prof-interval
  • --cpu-prof-name
  • --cpu-prof
  • --diagnostic-dir
  • --disable-proto
  • --disable-sigusr1
  • --disable-warning
  • --disable-wasm-trap-handler
  • --dns-result-order
  • --enable-fips
  • --enable-network-family-autoselection
  • --enable-source-maps
  • --entry-url
  • --experimental-abortcontroller
  • --experimental-addon-modules
  • --experimental-detect-module
  • --experimental-eventsource
  • --experimental-ffi
  • --experimental-import-meta-resolve
  • --experimental-import-text
  • --experimental-json-modules
  • --experimental-loader
  • --experimental-modules
  • --experimental-package-map
  • --experimental-print-required-tla
  • --experimental-quic
  • --experimental-require-module
  • --experimental-shadow-realm
  • --experimental-specifier-resolution
  • --experimental-stream-iter
  • --experimental-test-isolation
  • --experimental-top-level-await
  • --experimental-vfs
  • --experimental-vm-modules
  • --experimental-wasi-unstable-preview1
  • --force-context-aware
  • --force-fips
  • --force-node-api-uncaught-exceptions-policy
  • --frozen-intrinsics
  • --heap-prof-dir
  • --heap-prof-interval
  • --heap-prof-name
  • --heap-prof
  • --heapsnapshot-near-heap-limit
  • --heapsnapshot-signal
  • --http-parser
  • --icu-data-dir
  • --import
  • --input-type
  • --insecure-http-parser
  • --inspect-brk
  • --inspect-port, --debug-port
  • --inspect-publish-uid
  • --inspect-wait
  • --inspect
  • --localstorage-file
  • --max-http-header-size
  • --max-old-space-size-percentage
  • --network-family-autoselection-attempt-timeout
  • --no-addons
  • --no-async-context-frame
  • --no-deprecation
  • --no-experimental-global-navigator
  • --no-experimental-repl-await
  • --no-experimental-sqlite
  • --no-experimental-strip-types
  • --no-experimental-websocket
  • --no-experimental-webstorage
  • --no-extra-info-on-fatal-exception
  • --no-force-async-hooks-checks
  • --no-global-search-paths
  • --no-network-family-autoselection
  • --no-strip-types
  • --no-warnings
  • --no-webstorage
  • --node-memory-debug
  • --openssl-config
  • --openssl-legacy-provider
  • --openssl-shared-config
  • --pending-deprecation
  • --permission-audit
  • --permission
  • --preserve-symlinks-main
  • --preserve-symlinks
  • --prof-process
  • --redirect-warnings
  • --report-compact
  • --report-dir, --report-directory
  • --report-exclude-env
  • --report-exclude-network
  • --report-filename
  • --report-on-fatalerror
  • --report-on-signal
  • --report-signal
  • --report-uncaught-exception
  • --require-module
  • --require, -r
  • --secure-heap-min
  • --secure-heap
  • --snapshot-blob
  • --test-coverage-branches
  • --test-coverage-exclude
  • --test-coverage-functions
  • --test-coverage-include-all
  • --test-coverage-include
  • --test-coverage-lines
  • --test-global-setup
  • --test-isolation
  • --test-name-pattern
  • --test-only
  • --test-random-seed
  • --test-randomize
  • --test-reporter-destination
  • --test-reporter
  • --test-rerun-failures
  • --test-shard
  • --test-skip-pattern
  • --throw-deprecation
  • --title
  • --tls-cipher-list
  • --tls-keylog
  • --tls-max-v1.2
  • --tls-max-v1.3
  • --tls-min-v1.0
  • --tls-min-v1.1
  • --tls-min-v1.2
  • --tls-min-v1.3
  • --trace-deprecation
  • --trace-env-js-stack
  • --trace-env-native-stack
  • --trace-env
  • --trace-event-categories
  • --trace-event-file-pattern
  • --trace-events-enabled
  • --trace-exit
  • --trace-require-module
  • --trace-sigint
  • --trace-sync-io
  • --trace-tls
  • --trace-uncaught
  • --trace-warnings
  • --track-heap-objects
  • --unhandled-rejections
  • --use-bundled-ca
  • --use-env-proxy
  • --use-largepages
  • --use-openssl-ca
  • --use-system-ca
  • --v8-pool-size
  • --watch-kill-signal
  • --watch-path
  • --watch-preserve-output
  • --watch
  • --zero-fill-buffers
V8 options that are allowed are:
  • --abort-on-uncaught-exception
  • --disallow-code-generation-from-strings
  • --enable-etw-stack-walking
  • --expose-gc
  • --interpreted-frames-native-stack
  • --jitless
  • --max-heap-size
  • --max-old-space-size
  • --max-semi-space-size
  • --perf-basic-prof-only-functions
  • --perf-basic-prof
  • --perf-prof-unwinding-info
  • --perf-prof
  • --stack-trace-limit
گزینه‌های --perf-basic-prof-only-functions، --perf-basic-prof، --perf-prof-unwinding-info و --perf-prof تنها روی لینوکس در دسترس هستند. گزینهٔ --enable-etw-stack-walking تنها روی ویندوز در دسترس است.
path[:…]
فهرستی جداشده با ':' از دایرکتوری‌ها که به مسیر جستجوی ماژول اضافه می‌شوند. در ویندوز، این فهرست با ';' جدا می‌شود.
1
هنگامی که روی 1 تنظیم شود، هشدارهای منسوخ‌شدگی معلق را صادر می‌کند. هشدارهای منسوخ‌شدگی معلق عموماً با منسوخ‌شدگی‌های زمان اجرا یکسان هستند، با این استثنای قابل توجه که به‌طور پیش‌فرض خاموش هستند و منتشر نمی‌شوند مگر اینکه یا فلگ خط فرمان --pending-deprecation یا متغیر محیطی NODE_PENDING_DEPRECATION=1 تنظیم شده باشد. هشدارهای منسوخ‌شدگی معلق برای ارائه نوعی مکانیزم گزینشی "هشدار زودهنگام" استفاده می‌شوند که توسعه‌دهندگان می‌توانند از آن برای تشخیص کاربرد ای‌پی‌آی‌های منسوخ بهره ببرند.
instances
تعداد هندل‌های معلق نمونه‌های پایپ را هنگامی که سرور پایپ در انتظار اتصالات است تنظیم می‌کند. این تنظیم فقط برای ویندوز اعمال می‌شود.
هنگامی که روی 1 تنظیم شود، به لودر ماژول دستور می‌دهد تا هنگام حل و کش کردن ماژول‌ها، پیوندهای نمادین را حفظ کند.
file
هنگامی که تنظیم شود، هشدارهای فرایند به جای چاپ در stderr در فایل ارائه‌شده صادر می‌شوند. اگر فایل وجود نداشته باشد ایجاد شده و اگر وجود داشته باشد به انتهای آن افزوده می‌شود. اگر هنگام تلاش برای نوشتن هشدار در فایل خطایی رخ دهد، هشدار به جای آن در stderr نوشته خواهد شد. این معادل با استفاده از فلگ خط فرمان --redirect-warnings=file است.
file
مسیری به یک ماژول Node.js که به جای REPL توکار بارگذاری خواهد شد. تنظیم این مقدار به یک رشته خالی ('') از REPL توکار استفاده خواهد کرد.
file
مسیری به فایل مورد استفاده برای ذخیره تاریخچه ماندگار REPL. مسیر پیش‌فرض ~/.node_repl_history است که توسط این متغیر بازنویسی می‌شود. تنظیم مقدار به یک رشته خالی ('' یا ' ') تاریخچه ماندگار REPL را غیرفعال می‌کند.
value
اگر value برابر با '1' باشد، بررسی پلتفرم پشتیبانی‌شده در زمان راه‌اندازی Node.js نادیده گرفته می‌شود. ممکن است Node.js به درستی اجرا نشود. هرگونه مشکلی که در پلتفرم‌های پشتیبانی‌نشده رخ دهد رفع نخواهد شد.
value
اگر value برابر با 'child' باشد، گزینه‌های test reporter بازنویسی شده و خروجی آزمون در قالب TAP به stdout ارسال می‌شود. اگر هر مقدار دیگری ارائه شود، Node.js هیچ تضمینی درباره قالب گزارش‌دهنده مورد استفاده یا پایداری آن ارائه نمی‌دهد.
value
اگر value برابر با '0' باشد، اعتبارسنجی گواهی برای اتصالات TLS غیرفعال می‌شود. این امر TLS و به تبع آن HTTPS را ناامن می‌سازد. استفاده از این متغیر محیطی شدیداً نکوهش می‌شود.
1
هنگام فعال بودن، Node.js متغیرهای محیطی HTTP_PROXY، HTTPS_PROXY و NO_PROXY را در حین راه‌اندازی تجزیه کرده و درخواست‌ها را از طریق پروکسی مشخص‌شده هدایت می‌کند. تنها با پروکسی‌هایی استفاده کنید که برای استقرار مورد اعتماد و مجاز هستند. پشتیبانی از پروکسی برای دسترسی به شبکه‌های خارجی از طریق سرورهای پروکسی مجاز در نظر گرفته شده است، برای مثال هنگامی که یک فایروال به آن نیاز دارد. این برای پنهان کردن ترافیک یا دور زدن خط‌مشی شبکه نیست. بخش Built-in Proxy Support را ببینید. این همچنین می‌تواند با استفاده از فلگ خط فرمان --use-env-proxy فعال شود. هنگامی که هر دو تنظیم شده باشند، --use-env-proxy اولویت دارد.
1
نودجی‌اس از گواهی‌های CA معتمد موجود در مخزن سیستم همراه با گزینه --use-bundled-ca و متغیر محیطی NODE_EXTRA_CA_CERTS استفاده می‌کند. این همچنین می‌تواند با استفاده از فلگ خط فرمان --use-system-ca فعال شود. هنگامی که هر دو تنظیم شده باشند، --use-system-ca اولویت دارد.
dir
هنگامی که تنظیم شود، Node.js شروع به خروجی دادن پوشش کد جاوااسکریپت V8 و داده‌های Source Map به دایرکتوری ارائه‌شده به عنوان آرگومان می‌کند (اطلاعات پوشش به صورت JSON در فایل‌هایی با پیشوند coverage نوشته می‌شوند). متغیر NODE_V8_COVERAGE به‌طور خودکار به زیرفرایندها انتشار می‌یابد و ابزارسازی برنامه‌هایی را که خانواده توابع child_process.spawn() را فراخوانی می‌کنند آسان‌تر می‌سازد. NODE_V8_COVERAGE را می‌توان روی یک رشته خالی تنظیم کرد تا از انتشار جلوگیری شود.
<any>
متغیر NO_COLOR نام مستعاری برای NODE_DISABLE_COLORS است. مقدار این متغیر محیطی اختیاری است.
file
بارگذاری یک فایل پیکربندی OpenSSL در زمان راه‌اندازی. این فایل می‌تواند به عنوان بخشی از پیکربندی حالت FIPS استفاده شود. اگر متغیر روی یک مقدار خالی تنظیم شود، Node.js بدون بارگذاری هیچ فایل پیکربندی OpenSSL شروع به کار می‌کند. این روشی برای گذر از یک فایل پیکربندی پیش‌فرض است که وجود دارد اما قابل خواندن نیست، به عنوان مثال زمانی که /etc/ssl برای کاربری که Node.js تحت آن اجرا می‌شود در دسترس نیست که در غیر این صورت در زمان راه‌اندازی مهلک خواهد بود. در آن حالت هیچ پیکربندی اعمال نمی‌شود، از جمله هرگونه راه‌اندازی حالت FIPS که فایل انجام می‌داده است. اگر گزینه خط فرمان --openssl-config استفاده شود، این متغیر محیطی نادیده گرفته شده و مقدار خالی هیچ تأثیری نخواهد داشت.
dir
اگر --use-openssl-ca فعال باشد، یا اگر --use-system-ca در پلتفرم‌هایی غیر از macOS و ویندوز فعال باشد، این گزینه دایرکتوری حاوی گواهی‌های معتمد OpenSSL را بازنویسی و تنظیم می‌کند. توجه داشته باشید که مگر در صورتی که محیط فرزند صراحتاً تنظیم شود، این متغیر محیطی توسط هر فرایند فرزندی به ارث برده می‌شود و اگر آن‌ها از OpenSSL استفاده کنند، ممکن است باعث شود به همان مراجع صدور گواهی مشابه با node اعتماد کنند.
file
اگر --use-openssl-ca فعال باشد، یا اگر --use-system-ca در پلتفرم‌هایی غیر از macOS و ویندوز فعال باشد، این گزینه فایل حاوی گواهی‌های معتمد OpenSSL را بازنویسی و تنظیم می‌کند. توجه داشته باشید که مگر در صورتی که محیط فرزند صراحتاً تنظیم شود، این متغیر محیطی توسط هر فرایند فرزندی به ارث برده می‌شود و اگر آن‌ها از OpenSSL استفاده کنند، ممکن است باعث شود به همان مراجع صدور گواهی مشابه با node اعتماد کنند.
متغیر محیطی TZ برای تعیین پیکربندی منطقه زمانی استفاده می‌شود. اگرچه Node.js از تمام روش‌های گوناگونی که TZ در سایر محیط‌ها پردازش می‌شود پشتیبانی نمی‌کند، اما از شناسه‌های اصلی منطقه زمانی (مانند 'Etc/UTC'، 'Europe/Paris' یا 'America/New_York') پشتیبانی می‌کند. ممکن است از چند اختصار یا نام مستعار دیگر پشتیبانی کند، اما این‌ها شدیداً نکوهش شده و تضمین نمی‌شوند.
$ TZ=Europe/Dublin node -pe "new Date().toString()"
Wed May 12 2021 20:30:48 GMT+0100 (Irish Standard Time)
size
تعداد ریسمان‌های مورد استفاده در مخزن ریسمان libuv را روی size ریسمان تنظیم می‌کند. ای‌پی‌آی‌های سیستمی ناهمگام در صورت امکان توسط Node.js استفاده می‌شوند، اما در جایی که وجود ندارند، از مخزن ریسمان libuv برای ایجاد ای‌پی‌آی‌های ناهمگام node بر پایه ای‌پی‌آی‌های سیستمی همگام استفاده می‌شود. ای‌پی‌آی‌های Node.js که از مخزن ریسمان استفاده می‌کنند عبارتند از:
  • تمام ای‌پی‌آی‌های fs، به جز ای‌پی‌آی‌های ناظر فایل و مواردی که صراحتاً همگام هستند
  • ای‌پی‌آی‌های ناهمگام رمزنگاری مانند crypto.pbkdf2()، crypto.scrypt()، crypto.randomBytes()، crypto.randomFill()، crypto.generateKeyPair()
  • تابع dns.lookup()
  • تمام ای‌پی‌آی‌های zlib، به جز مواردی که صراحتاً همگام هستند
از آنجا که مخزن ریسمان libuv اندازه ثابتی دارد، بدان معناست که اگر به هر دلیلی هر یک از این ای‌پی‌آی‌ها زمان زیادی ببرد، سایر ای‌پی‌آی‌های (ظاهراً نامرتبط) که در مخزن ریسمان libuv اجرا می‌شوند دچار افت کارایی خواهند شد. برای کاهش این مشکل، یک راه‌حل بالقوه افزایش اندازه مخزن ریسمان libuv با تنظیم متغیر محیطی 'UV_THREADPOOL_SIZE' روی مقداری بزرگتر از 4 (مقدار پیش‌فرض فعلی آن) است. با این حال، تنظیم این مورد از درون فرایند با استفاده از process.env.UV_THREADPOOL_SIZE=size تضمین نمی‌شود که کار کند، زیرا مخزن ریسمان به عنوان بخشی از مقداردهی اولیه محیط اجرا بسیار پیش از اجرای کد کاربر ایجاد شده است. برای اطلاعات بیشتر، مستندات مخزن ریسمان libuv را ببینید.

اشکالات در GitHub Issues ردیابی می‌شوند:

حق نشر برای مشارکت‌کنندگان Node.js محفوظ است. نودجی‌اس تحت مجوز MIT در دسترس است.

نودجی‌اس همچنین شامل کتابخانه‌های خارجی است که تحت مجوزهای گوناگون عرضه شده‌اند. برای مشاهده متن کامل مجوز به نشانی زیر مراجعه کنید:

وب‌سایت:

مستندات:

مخزن گیت‌هاب و ردیاب مشکلات:

October 25, 2026