| NODE(1) | General Commands Manual | NODE(1) |
نام (NAME)
node —
محیط
اجرای
جاوااسکریپت
سمت سرور
خلاصه دستور (SYNOPSIS)
node
[گزینهها]
[گزینههای
v8]
[<نقطه-ورود-برنامه>
| -e
رشته |
--]
[آرگومانها
...] node inspect,
[<نقطه-ورود-برنامه>
| -e
رشته |
<میزبان>:<درگاه>]
... node
[--v8-options]
توضیحات (DESCRIPTION)
نودجیاس (Node.js) مجموعهای از کتابخانهها برای جاوااسکریپت است که امکان استفاده از آن در خارج از مرورگر را فراهم میکند. تمرکز اصلی آن بر ساخت کارسازها و کارخواههای شبکهای ساده با پیادهسازی آسان است.
دستور
node را
بدون
آرگومان
اجرا کنید
تا یک REPL آغاز
شود.
گزینهها (OPTIONS)
-- نام مستعار برای stdin. همانند استفاده از - در سایر ابزارهای خط فرمان، به این معنی است که اسکریپت از stdin خوانده میشود و بقیه گزینهها به آن اسکریپت ارسال میگردند.
--- پایان گزینههای node را مشخص میکند. باقی آرگومانها به اسکریپت ارسال میشوند. چنانچه پیش از این، نام فایل اسکریپت یا اسکریپت eval/print ارائه نشده باشد، آرگومان بعدی به عنوان نام فایل اسکریپت در نظر گرفته میشود.
--abort-on-uncaught-exception- سقط (Abort) کردن به جای خروج عادی باعث ایجاد یک فایل core برای تحلیل پس از مرگ برنامه با استفاده از یک اشکالزدا (مانند lldb، gdb و mdb) میشود. در صورت ارسال این فلگ، همچنان میتوان با استفاده از process.setUncaughtExceptionCaptureCallback() (و از طریق کاربرد ماژول node:domain که از آن بهره میبرد) رفتار برنامه را طوری تنظیم کرد که سقط نشود.
--allow-addons- هنگام
استفاده از
مدل مجوزها
(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' } --allow-child-process- هنگام
استفاده از
مدل مجوزها
(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")']);ایپیآی child_process.fork() آرگومانهای اجرایی را از فرایند والد به ارث میبرد. این بدان معناست که اگر Node.js با فعال بودن Permission Model راهاندازی شود و فلگ --allow-child-process تعیین گردد، هر فرایند child ایجادشده با استفاده از child_process.fork() بهطور خودکار تمامی فلگهای مرتبط Permission Model را دریافت خواهد کرد. این رفتار در مورد child_process.spawn() نیز صدق میکند، اما در آن حالت، فلگها به جای آرگومانهای مستقیم فرایند، از طریق متغیر محیطی NODE_OPTIONS انتشار مییابند.$ 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' } --allow-ffi- هنگام
استفاده از
مدل مجوزها
(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' } --allow-fs-read- این فلگ
مجوزهای
خواندن از
سیستم فایل
(filesystem) را با
استفاده از
مدل مجوزها
(Permission Model)
پیکربندی
میکند.
آرگومانهای
معتبر برای
فلگ --allow-fs-read
عبارتند از:
- * - برای مجاز کردن تمامی عملیاتهای FileSystemRead.
- میتوان چندین مسیر را با استفاده از چند فلگ --allow-fs-read مجاز کرد. مثال: --allow-fs-read=/folder1/ --allow-fs-read=/folder2/
$ 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 --allow-fs-write- این فلگ
مجوزهای
نوشتن در
سیستم فایل
(filesystem) را با
استفاده از
مدل مجوزها
(Permission Model)
پیکربندی
میکند.
آرگومانهای
معتبر برای
فلگ --allow-fs-write
عبارتند از:
- * - برای مجاز کردن تمامی عملیاتهای FileSystemWrite.
- میتوان چندین مسیر را با استفاده از چند فلگ --allow-fs-write مجاز کرد. مثال: --allow-fs-write=/folder1/ --allow-fs-write=/folder2/
--allow-inspector- هنگام
استفاده از
مدل مجوزها
(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', }
--allow-net- هنگام
استفاده از
مدل مجوزها
(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', }
--allow-openssl-store- هنگام استفاده از مدل مجوزها (Permission Model)، فرایند بهطور پیشفرض قادر به استفاده از لودرهای OpenSSL STORE نخواهد بود، برای نمونه جهت بارگذاری یک کلید خصوصی از یک <URL> ارسالشده به crypto.createPrivateKey(). تلاش برای انجام این کار یک خطای ERR_ACCESS_DENIED ایجاد میکند مگر آنکه کاربر صراحتاً فلگ --allow-openssl-store را ارسال کند. این مجوز را میتوان در زمان اجرا با استفاده از permission.drop() ساقط کرد. این فلگ اختیارات گستردهای به لودرهای پیکربندیشدهٔ OpenSSL STORE اعطا میکند. یک لودر ممکن است به فایلها، دستگاهها، توکنها یا شبکه دسترسی داشته باشد. دسترسیهای انجامشده توسط لودر توسط محدودههای مجوز fs.read، fs.write یا net مقید نمیشوند.
--allow-wasi- هنگام
استفاده از
مدل مجوزها
(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', } --allow-worker- هنگام
استفاده از
مدل مجوزها
(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' } --build-sea=config- یک برنامه اجرایی تکفایلی (single executable application) را از روی یک فایل پیکربندی JSON تولید میکند. آرگومان باید مسیری به فایل پیکربندی باشد. اگر مسیر مطلق نباشد، نسبت به دایرکتوری کاری فعلی حل میشود. برای فیلدهای پیکربندی، نکات میانپلتفرمی و ایپیآیهای داراییها، مستندات single executable application را بررسی کنید.
--build-snapshot- هنگام خروج
فرایند، یک
snapshot blob ایجاد
کرده و آن
را بر روی
دیسک
مینویسد
که بعداً
میتواند
با --snapshot-blob
بارگذاری
شود. هنگام
ساخت
اسنپشات،
چنانچه --snapshot-blob
مشخص نشده
باشد، بلاب
تولیدشده
بهطور
پیشفرض در
فایل snapshot.blob در
دایرکتوری
کاری جاری
نوشته
خواهد شد.
در غیر این
صورت در
مسیر
مشخصشده
توسط --snapshot-blob
ذخیره
میشود.
ایپیآی v8.startupSnapshot میتواند برای تعیین نقطه ورود در زمان ساخت اسنپشات استفاده شود، بدین ترتیب از نیاز به یک اسکریپت ورودی اضافی در زمان بازیابی (deserialization) جلوگیری میکند:
$ 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 را بررسی کنید. اسنپشات در حال حاضر فقط از بارگذاری یک نقطه ورود منفرد در طول فرایند ساخت اسنپشات پشتیبانی میکند که میتواند ماژولهای توکار را بارگذاری کند، اما ماژولهای اضافی در فضای کاربری را خیر. کاربران میتوانند برنامههای خود را با باندلر دلخواه پیش از ساخت اسنپشات در یک اسکریپت واحد بستهبندی کنند. از آنجا که اطمینان از قابلیت سریالسازی همه ماژولهای توکار که با گذشت زمان افزایش مییابند دشوار است، تنها زیرمجموعهای از ماژولهای توکار به خوبی آزمایش شدهاند تا در طول فرایند ساخت اسنپشات قابل سریالسازی باشند. مجموعه آزمون هسته Node.js بررسی میکند که چند برنامه نسبتاً پیچیده بتوانند اسنپشات شوند. فهرست ماژولهای توکاری که در اسنپشات توکار Node.js گنجانده شدهاند، پشتیبانیشده تلقی میشوند. هنگامی که سازنده اسنپشات با ماژول توکاری روبرو شود که قابل سریالسازی نیست، ممکن است فرایند ساخت اسنپشات دچار خرابی شود. در این صورت، یک راهحل معمول به تعویق انداختن بارگذاری آن ماژول تا زمان اجرا با استفاده از v8.startupSnapshot.setDeserializeMainFunction() یا v8.startupSnapshot.addDeserializeCallback() است. چنانچه نیاز به سریالسازی برای یک ماژول اضافی در طول فرایند ساخت اسنپشات دارید، لطفاً یک درخواست در ردیاب مشکلات Node.js ثبت کنید.$ 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 --build-snapshot-config- مسیر یک
فایل
پیکربندی JSON
را مشخص
میکند که
رفتار ساخت
اسنپشات
را تنظیم
مینماید.
گزینههای
زیر در حال
حاضر
پشتیبانی
میشوند:
- builder <string> الزامی. نام اسکریپتی را تعیین میکند که پیش از ساخت اسنپشات اجرا میشود، درست مانند اینکه --build-snapshot همراه با builder به عنوان نام اسکریپت اصلی ارسال شده باشد.
- withoutCodeCache <boolean> اختیاری. گنجاندن کش کد زمان صرفشده برای کامپایل توابع گنجاندهشده در اسنپشات را کاهش میدهد، ولی در عین حال موجب بزرگتر شدن حجم اسنپشات و احتمالاً آسیب به قابلیت جابجایی (portability) اسنپشات میشود.
-c,--check- بررسی نحو (Syntax check) اسکریپت بدون اجرای آن.
--completion-bash- چاپ
اسکریپت
تکمیل
خودکار
قابل source برای
bash در Node.js.
node --completion-bash > node_bash_completion source node_bash_completion
-Ccondition,--conditions=condition- شرایط
سفارشی
برای حل
اکسپورتهای
مشروط (conditional exports)
را فراهم
میکند. هر
تعداد نام
شرط
رشتهای
سفارشی
مجاز است.
شرایط
پیشفرض Node.js
یعنی "node"،
"default"، "import" و
"require" همیشه
طبق تعریف
اعمال
خواهند شد.
به عنوان
مثال، برای
اجرای یک
ماژول با
تفکیکهای
"development":
node -C development app.js
--cpu-prof- پروفایلر CPU
مربوط به V8
را هنگام
راهاندازی
آغاز کرده و
پیش از
خروج،
پروفایل CPU
را روی دیسک
مینویسد.
اگر --cpu-prof-dir
مشخص نشده
باشد،
پروفایل
تولیدشده
در
دایرکتوری
کاری جاری
قرار
میگیرد.
اگر --cpu-prof-name
مشخص نشده
باشد،
پروفایل
تولیدشده
با نام
CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile
نامگذاری
میشود.
اگر --cpu-prof-name مشخص شده باشد، مقدار ارائهشده به عنوان یک الگو برای نام فایل استفاده میشود. جانگهدار زیر پشتیبانی میشود و در زمان اجرا جایگزین خواهد شد:
$ node --cpu-prof index.js $ ls *.cpuprofile CPU.20190409.202950.15293.0.0.cpuprofile
- ${pid} — شناسه فرایند جاری (Process ID)
$ node --cpu-prof --cpu-prof-name 'CPU.${pid}.cpuprofile' index.js $ ls *.cpuprofile CPU.15293.cpuprofile --cpu-prof-dir- دایرکتوری محل قرارگیری پروفایلهای CPU تولیدشده توسط --cpu-prof را مشخص میکند. مقدار پیشفرض توسط گزینه خط فرمان --diagnostic-dir کنترل میشود.
--cpu-prof-interval- فاصله زمانی نمونهبرداری را بر حسب میکروثانیه برای پروفایلهای CPU تولیدشده توسط --cpu-prof مشخص میکند. مقدار پیشفرض ۱۰۰۰ میکروثانیه است.
--cpu-prof-name- نام فایل پروفایل CPU تولیدشده توسط --cpu-prof را مشخص میکند.
--diagnostic-dir=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
--disable-proto=mode- ویژگی Object.prototype.__proto__ را غیرفعال میکند. اگر mode برابر با delete باشد، ویژگی بهطور کامل حذف میشود. اگر mode برابر با throw باشد، دسترسی به این ویژگی استثنایی با کد ERR_PROTO_ACCESS ایجاد میکند.
--disable-sigusr1- امکان آغاز یک نشست اشکالزدایی با ارسال سیگنال SIGUSR1 به فرایند را غیرفعال میکند.
--disable-warning=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';
برای مثال، اسکریپت زیر هشدار DEP0025 require('node:sys') را صادر میکند، اما هیچکدام از هشدارهای آزمایشی (مانند ExperimentalWarning: vm.measureMemory is an experimental feature in <=v21) را هنگام اجرا با node --disable-warning=ExperimentalWarning صادر نخواهد کرد:const sys = require('node:sys');import sys from 'node:sys'; import vm from 'node:vm'; vm.measureMemory();
const sys = require('node:sys'); const vm = require('node:vm'); vm.measureMemory(); --disable-wasm-trap-handler- نودجیاس بررسیهای محدوده 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 محدود است، نمونههای بیشتری ایجاد شوند.
--disallow-code-generation-from-strings- باعث میشود که ویژگیهای درونی زبان مانند eval و new Function که از رشتهها کد تولید میکنند، به جای آن یک استثنا ایجاد نمایند. این گزینه بر ماژول node:vm در Node.js تأثیر نمیگذارد.
--dns-result-order=order- مقدار
پیشفرض order
را در dns.lookup() و
dnsPromises.lookup() تعیین
میکند.
مقدار
میتواند
یکی از
موارد زیر
باشد:
- ipv4first: مقدار پیشفرض order را به ipv4first تنظیم میکند.
- ipv6first: مقدار پیشفرض order را به ipv6first تنظیم میکند.
- verbatim: مقدار پیشفرض order را به verbatim تنظیم میکند.
--enable-fips- فعالسازی حالت FIPS در زمان راهاندازی. با OpenSSL 3، یک ارائهدهندهٔ پیکربندیشده به نام fips باید در دسترس بوده و با موفقیت مقداردهی اولیه شود. با OpenSSL 1.1.1، باید Node.js در برابر یک نسخه OpenSSL با قابلیت FIPS بیلد شده باشد.
--enable-source-maps- فعالسازی
پشتیبانی
از نگاشت
مبدأ (Source Map)
برای
ردگیری
پشته (stack traces).
هنگام
استفاده از
یک
ترنسپایلر
مانند TypeScript،
ردگیری
پشته
صادرشده
توسط یک
برنامه به
کد
ترنسپایلشده
اشاره
دارد، نه
موقعیت
منبع اصلی.
گزینه --enable-source-maps
کش کردن
نگاشتهای
مبدأ را
فعال
میکند و
نهایت تلاش
خود را برای
گزارش
ردگیری
پشته نسبت
به فایل
منبع اصلی
انجام
میدهد.
بازنویسی
Error.prepareStackTrace ممکن
است مانع از
تغییر
ردگیری
پشته توسط
--enable-source-maps شود. در
تابع
بازنویس،
نتایج تابع
اصلی Error.prepareStackTrace
را
فراخوانی
کرده و
بازگردانید
تا ردگیری
پشته با
نگاشت مبدأ
اصلاح شود.
توجه داشته باشید که فعالسازی نگاشتهای مبدأ میتواند هنگام دسترسی به Error.stack تأخیر در برنامه ایجاد کند. اگر در برنامه خود مکرراً به Error.stack دسترسی دارید، پیامدهای کارایی --enable-source-maps را در نظر بگیرید.
const originalPrepareStackTrace = Error.prepareStackTrace; Error.prepareStackTrace = (error, trace) => { // Modify error and trace and format stack trace with // original Error.prepareStackTrace. return originalPrepareStackTrace(error, trace); }; --entry-url- در صورت
وجود، 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")' --env-file-if-exists=file- رفتار آن مشابه --env-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.
کلمه کلیدی export پیش از کلید نادیده گرفته میشود:MULTI_LINE="THIS IS A MULTILINE" # will result in `THIS IS\nA MULTILINE` as the value.
اگر میخواهید متغیرهای محیطی را از فایلی بارگذاری کنید که ممکن است وجود نداشته باشد، میتوانید به جای آن از فلگ --env-file-if-exists استفاده کنید.export USERNAME="nodejs" # will result in `nodejs` as the value.
-e,--evalscript- آرگومان بعدی را به عنوان جاوااسکریپت ارزیابی میکند. ماژولهایی که در REPL از پیش تعریف شدهاند را میتوان در script نیز استفاده کرد. اگر script با - آغاز شود، آن را با استفاده از = ارسال کنید (برای مثال node --print --eval=-42) تا به عنوان مقدار --eval تجزیه شود. در ویندوز، استفاده از cmd.exe با نقلقول تکی به درستی کار نخواهد کرد زیرا فقط نقلقول دوگانه " را برای نقلقول میشناسد. در Powershell یا Git bash هر دو علامت ' و " قابل استفاده هستند. اجرای کد حاوی انواع درونخطی امکانپذیر است مگر اینکه فلگ --no-strip-types ارائه شده باشد.
--experimental-addon-modules- فعالسازی پشتیبانی آزمایشی از وارد کردن (import) افزونههای .node.
--experimental-config-file=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 حاوی پیکربندی مختص به آن زیرسیستم هستند.
برای نگهداری چندین پیکربندی مختص به نسخه در یک فایل، از آرایه configs استفاده کنید. نودجیاس از اولین موردی استفاده میکند که nodeVersion آن با نسخه اصلی جاری Node.js مطابقت داشته باشد:{ "nodeVersion": 25, "nodeOptions": { "watch-path": "src" } }هنگامی که از configs استفاده میشود، بالاترین سطح تنها میتواند شامل $schema و configs باشد. هر مورد configs باید یک عدد صحیح nodeVersion و یک شیء config تعریف کند. یک پیکربندی تکی سطح بالا نیازی به nodeVersion ندارد، اما در صورت وجود باید با نسخه اصلی جاری Node.js مطابقت داشته باشد. هنگامی که یک فضای نام در فایل پیکربندی وجود داشته باشد، Node.js بهطور خودکار فلگ متناظر (مانند --test، --watch، --permission) را فعال میکند. این امر به شما اجازه میدهد تا گزینههای مختص زیرسیستم را بدون ارسال صریح فلگ در خط فرمان پیکربندی کنید. برای مثال:{ "$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" } } } ] }معادل است با:{ "test": { "test-isolation": "process" } }برای غیرفعال کردن فلگ خودکار در حین استفاده از گزینههای فضای نام، میتوانید صراحتاً مقدار فلگ را درون فضای نام به false تنظیم کنید:node --test --test-isolation=process
فلگهای No-op پشتیبانی نمیشوند. همه فلگهای V8 در حال حاضر پشتیبانی نمیشوند. امکان استفاده از شمای رسمی JSON برای اعتبارسنجی فایل پیکربندی وجود دارد که ممکن است بسته به نسخه Node.js متفاوت باشد. هر کلید در فایل پیکربندی متناظر با یک فلگ است که میتواند به عنوان آرگومان خط فرمان ارسال شود. مقدار کلید همان مقداری است که به فلگ ارسال خواهد شد. برای مثال، فایل پیکربندی بالا معادل با آرگومانهای خط فرمان زیر است:{ "test": { "test": false, "test-isolation": "process" } }اولویت در پیکربندی به شرح زیر است:node --import amaro/strip --watch-path=src --watch-preserve-output --test-isolation=process
- متغیر NODE_OPTIONS و گزینههای خط فرمان
- گزینههای NODE_OPTIONS در Dotenv
- فایل پیکربندی
--experimental-default-config-file- این فلگ نام مستعاری برای --experimental-config-file بدون آرگومان است. در صورت وجود، Node.js به دنبال یک فایل node.config.json در دایرکتوری کاری جاری گشته و آن را به عنوان فایل پیکربندی بارگذاری میکند.
--experimental-eventsource- فعالسازی ارائه وبایپیآی EventSource در دامنه سراسری (global scope).
--experimental-ffi- ماژول آزمایشی node:ffi را فعال میکند. این فلگ تنها در بیلدهایی با پشتیبانی FFI در دسترس است.
--experimental-import-meta-resolve- پشتیبانی آزمایشی از URL والد در import.meta.resolve() را فعال میکند که اجازه میدهد آرگومان دوم parentURL برای حل متنی ارسال شود. پیشتر کل ویژگی import.meta.resolve را کنترل میکرد.
--experimental-import-text- فعالسازی پشتیبانی آزمایشی از وارد کردن ماژولها با with { type: 'text' }.
--experimental-inspector-network-resource- فعالسازی پشتیبانی آزمایشی از منابع شبکه بازرس (inspector).
--experimental-loader=module- ماژول (module) حاوی قلابهای سفارشیسازی ناهمگام ماژولِ صادرشده را مشخص میکند. پارامتر module میتواند هر رشتهای باشد که به عنوان مشخصکننده import پذیرفته میشود. این ویژگی در صورت استفاده با مدل مجوزها (Permission Model) نیازمند --allow-worker است.
--experimental-network-inspection- فعالسازی پشتیبانی آزمایشی از بازرسی شبکه با ابزارهای توسعه کروم (Chrome DevTools).
--experimental-package-map=<path>- فعالسازی
حل آزمایشی
نگاشت بسته
(package map). آرگومان
path مکان یک
فایل
پیکربندی JSON
را مشخص
میکند که
نگاشتهای
حل بسته را
تعریف
مینماید.
هنگام فعال بودن، حل مشخصکنندههای ساده برای حل به نگاشت بسته مراجعه میکند. این امر اجازه کنترل صریح بر اینکه کدام بستهها میتوانند چه وابستگیهایی را وارد کنند میدهد. برای جزئیات درباره فرمت فایل پیکربندی و الگوریتم حل، مستندات Package maps را ببینید.
node --experimental-package-map=./package-map.json app.js
--experimental-print-required-tla- اگر گراف ماژول ES به دلیل داشتن هرگونه await در سطح بالا نتواند require() شود، این فلگ به Node.js اجازه میدهد تا مکان آنها را پیدا کرده و چاپ کند.
--experimental-quic- فعالسازی پشتیبانی آزمایشی از پروتکل QUIC.
--experimental-sea-config- از این فلگ برای ایجاد یک بلاب (blob) استفاده کنید که میتواند درون باینری Node.js تزریق شود تا یک برنامه اجرایی مستقل (single executable application) تولید گردد. برای جزئیات بیشتر، مستندات مربوط به این پیکربندی را ببینید.
--experimental-shadow-realm- از این فلگ برای فعالسازی پشتیبانی از ShadowRealm استفاده کنید.
--experimental-storage-inspection- فعالسازی پشتیبانی آزمایشی از بازرسی حافظه ذخیرهسازی.
--experimental-stream-iter- ماژول آزمایشی node:stream/iter را فعال میکند.
--experimental-test-coverage- هنگامی که همراه با ماژول node:test استفاده شود، یک گزارش پوشش کد به عنوان بخشی از خروجی test runner تولید میشود. اگر هیچ آزمایشی اجرا نشود، گزارش پوشش تولید نخواهد شد. برای جزئیات بیشتر مستندات جمعآوری پوشش کد از آزمایشها را ببینید.
--experimental-test-module-mocks- ماک کردن ماژول را در test runner فعال میکند. این ویژگی در صورت استفاده همراه با مدل مجوزها (Permission Model) نیازمند --allow-worker است.
--experimental-test-tag-filter='<expr>'- تنها آزمایشهایی را اجرا میکند که با عبارت بولی فیلتر برچسب ارائهشده مطابقت داشته باشند. آزمایشها برچسبها را از طریق گزینه tags در test()، it()، suite() یا describe() اعلان میکنند. برچسبها از سوئیتها به آزمایشهای تودرتو با اجتماع به ارث میرسند. این عبارت از عملگرهای بولی (and/&&، or/||، not/!)، پرانتزها برای گروهبندی و نویسههای عام * درون شناسهها پشتیبانی میکند. اولویت استاندارد اعمال میشود: not اتصال قویتری نسبت به and و آن نیز اتصال قویتری نسبت به or دارد. برای دستور زبان کامل و رفتار، Test tags را ببینید. این فلگ میتواند بیش از یک بار مشخص شود؛ چندین عبارت با AND ترکیب میشوند، بنابراین یک آزمایش باید هر عبارت را برای اجرا برآورده کند. یک عبارت نادرست باعث میشود که test runner پیش از اجرای هر آزمایشی با وضعیتی غیرصفر خارج شود.
--experimental-vfs- ماژول آزمایشی node:vfs را فعال میکند.
--experimental-vm-modules- پشتیبانی آزمایشی از ماژولهای ES را در ماژول node:vm فعال میکند.
--experimental-wasi-unstable-preview1- پشتیبانی آزمایشی از واسط سیستم وباسمبلی (WASI) را فعال میکند.
--experimental-worker-inspection- پشتیبانی آزمایشی از بازرسی worker را با ابزارهای توسعه Chrome DevTools فعال میکند.
--force-context-aware- بارگذاری افزونههای بومی که context-aware نیستند را غیرفعال میکند.
--force-fips- حالت FIPS را در زمان راهاندازی فعال کرده و از غیرفعال شدن آن توسط کد اسکریپت جلوگیری میکند. نیازمندیهای OpenSSL مشابه --enable-fips اعمال میشوند.
--force-node-api-uncaught-exceptions-policy- رویداد uncaughtException را روی فراخوانیهای بازگشتی ناهمگام Node-API اجباری میکند. برای جلوگیری از فروپاشی فرایند توسط یک افزونه موجود، این فلگ بهطور پیشفرض فعال نیست. در آینده این فلگ بهطور پیشفرض فعال خواهد شد تا رفتار صحیح تضمین گردد.
--frozen-intrinsics- ویژگیهای توکار منجمدشده آزمایشی مانند Array و Object را فعال میکند. تنها بافت ریشه پشتیبانی میشود. هیچ تضمینی وجود ندارد که globalThis.Array در واقع مرجع توکار پیشفرض باشد. کد ممکن است تحت این فلگ دچار خطا شود. برای مجاز ساختن افزودن پلیفیلها، هر دو فلگ --require و --import پیش از منجمد کردن موارد توکار اجرا میشوند.
--heap-prof- پروفایلر
هیپ 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-dir- دایرکتوری محل قرارگیری پروفایلهای هیپ تولیدشده توسط --heap-prof را مشخص میکند. مقدار پیشفرض توسط گزینه خط فرمان --diagnostic-dir کنترل میشود.
--heap-prof-interval- میانگین فاصله نمونهبرداری را بر حسب بایت برای پروفایلهای هیپ تولیدشده توسط --heap-prof مشخص میکند. مقدار پیشفرض 512 * 1024 بایت است.
--heap-prof-name- نام فایل پروفایل هیپ تولیدشده توسط --heap-prof را مشخص میکند.
--heapsnapshot-near-heap-limit=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
--heapsnapshot-signal=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
-h,--help- چاپ گزینههای خط فرمان node. خروجی این گزینه نسبت به این سند جزئیات کمتری دارد.
--icu-data-dir=file- مسیر بارگذاری دادههای ICU را مشخص میکند. (بر NODE_ICU_DATA اولویت دارد.)
--import=module- ماژول مشخصشده را در زمان راهاندازی از پیش بارگذاری میکند. اگر این فلگ چندین بار ارائه شود، هر ماژول به ترتیب ظاهر شدن اجرا خواهد شد، با شروع از مواردی که در NODE_OPTIONS ارائه شدهاند. از قواعد تفکیک ماژولهای ECMAScript پیروی میکند. از --require برای بارگذاری یک ماژول CommonJS استفاده کنید. ماژولهای پیشبارگذاریشده با --require قبل از ماژولهای پیشبارگذاریشده با --import اجرا میشوند. ماژولها در ریسمان اصلی و همچنین در تمام ریسمانهای کارگر، فرایندهای انشعابیافته (forked) یا خوشهای پیشبارگذاری میشوند.
--input-type=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 اجرا کند.
--insecure-http-parser- فلگهای
مسامحه را
روی
تجزیهکننده
HTTP فعال
میکند. این
کار ممکن
است
تعاملپذیری
با
پیادهسازیهای
غیراستاندارد
HTTP را ممکن
سازد. هنگام
فعال بودن،
تجزیهکننده
موارد زیر
را
میپذیرد:
- مقادیر نامعتبر هدرهای HTTP.
- نسخههای نامعتبر HTTP.
- اجازه به پیام حاوی هر دو هدر Transfer-Encoding و Content-Length.
- اجازه به دادههای اضافه پس از پیام در صورت حضور Connection: close.
- اجازه به کدگذاریهای انتقال اضافی پس از ارائه chunked.
- اجازه به استفاده از \n به عنوان جداکننده توکن به جای \r\n.
- اجازه به عدم ارائه \r\n پس از یک قطعه (chunk).
- اجازه به حضور فاصلهها پس از اندازه قطعه و قبل از \r\n.
--inspect-brk=[[host:]port]- بازرس را روی host:port فعال کرده و در شروع اسکریپت کاربر متوقف میشود. مقدار پیشفرض host:port برابر با 127.0.0.1:9229 است. اگر پورت 0 مشخص شود، یک پورت تصادفی در دسترس استفاده خواهد شد. برای توضیحات بیشتر درباره اشکالزدای Node.js، بخش یکپارچهسازی V8 Inspector را ببینید. هشدار امنیتی زیر را در رابطه با کاربرد پارامتر host ببینید.
--inspect-port=[host:]port- مقدار host:port مورد استفاده در زمان فعالسازی بازرس را تنظیم میکند. هنگام فعالسازی بازرس با ارسال سیگنال SIGUSR1 مفید است. مگر زمانی که --disable-sigusr1 ارسال شده باشد. میزبان پیشفرض 127.0.0.1 است. اگر پورت 0 مشخص شود، یک پورت آزاد تصادفی استفاده خواهد شد. هشدار امنیتی زیر را در رابطه با کاربرد پارامتر host ببینید.
--inspect-publish-uid=stderr,http- روشهای قرار گرفتن نشانی URL وبسوکت بازرس در معرض دید را مشخص میکند. بهطور پیشفرض URL وبسوکت بازرس در stderr و در نقطه پایانی /json/list در نشانی http://host:port/json/list در دسترس است.
--inspect-wait=[[host:]port]- بازرس را روی host:port فعال کرده و منتظر اتصال اشکالزدا میماند. مقدار پیشفرض host:port برابر با 127.0.0.1:9229 است. اگر پورت 0 مشخص شود، یک پورت تصادفی در دسترس استفاده خواهد شد. برای توضیحات بیشتر درباره اشکالزدای Node.js، بخش یکپارچهسازی V8 Inspector را ببینید. هشدار امنیتی زیر را در رابطه با کاربرد پارامتر host ببینید.
--inspect=[[host:]port]- بازرس را روی host:port فعال میکند. مقدار پیشفرض 127.0.0.1:9229 است. اگر پورت 0 مشخص شود، یک پورت آزاد تصادفی استفاده خواهد شد. یکپارچهسازی بازرس V8 به ابزارهایی مانند Chrome DevTools و محیطهای IDE اجازه میدهد نمونههای Node.js را اشکالزدایی و پروفایل کنند. این ابزارها از طریق یک پورت tcp به نمونههای Node.js متصل میشوند و با استفاده از پروتکل Chrome DevTools ارتباط برقرار میکنند. برای توضیحات بیشتر، بخش یکپارچهسازی V8 Inspector را ببینید.
-i,--interactive- محیط REPL را باز میکند حتی اگر stdin یک ترمینال به نظر نرسد.
--jitless- تخصیص حافظه اجرایی در زمان اجرا را غیرفعال میکند. این گزینه ممکن است در برخی پلتفرمها به دلایل امنیتی الزامی باشد. همچنین میتواند سطح حمله را در سایر پلتفرمها کاهش دهد، اما تأثیر عملکردی آن ممکن است شدید باشد.
--localstorage-file=file- فایل مورد استفاده برای ذخیره دادههای localStorage. اگر فایل وجود نداشته باشد، در نخستین باری که به localStorage دسترسی پیدا شود ایجاد میگردد. همان فایل میتواند بهطور همزمان بین چندین فرایند Node.js به اشتراک گذاشته شود.
--max-http-header-size=size- حداکثر اندازه هدرهای HTTP را بر حسب بایت مشخص میکند. مقدار پیشفرض 16 KiB است.
--max-old-space-size-percentage=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
--network-family-autoselection-attempt-timeout- مقدار پیشفرض مهلت تلاش انتخاب خودکار خانواده شبکه را تعیین میکند. برای اطلاعات بیشتر، net.getDefaultAutoSelectFamilyAttemptTimeout() را ببینید.
--no-addons- شرط صدور node-addons و همچنین بارگذاری افزونههای بومی را غیرفعال میکند. هنگامی که --no-addons مشخص شود، فراخوانی process.dlopen یا فراخوانی یک افزونه بومی ++C با خطا مواجه شده و یک استثنا صادر میکند.
--no-async-context-frame- 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.
--no-deprecation- Silence deprecation warnings.
--no-experimental-detect-module- Disable using syntax detection to determine module type.
- Disable exposition of Navigator API on the global scope.
--no-experimental-repl-await- از این فلگ برای غیرفعالسازی await در سطح بالا (top-level await) در REPL استفاده کنید.
--no-experimental-require-module- نام مستعار قدیمی برای --no-require-module.
--no-experimental-sqlite- ماژول آزمایشی node:sqlite را غیرفعال میکند.
--no-experimental-websocket- ارائه <WebSocket> در دامنه سراسری را غیرفعال میکند.
--no-experimental-webstorage- پشتیبانی از Web Storage را غیرفعال میکند.
--no-extra-info-on-fatal-exception- اطلاعات اضافی در استثنای مهلک (fatal exception) که موجب خروج میشود را پنهان میکند.
--no-force-async-hooks-checks- بررسیهای زمان اجرا برای async_hooks را غیرفعال میکند. این موارد همچنان در زمان فعال شدن پویای async_hooks بهطور خودکار فعال خواهند شد.
--no-global-search-paths- ماژولها را در مسیرهای سراسری مانند $HOME/.node_modules و $NODE_PATH جستجو نمیکند.
--no-network-family-autoselection- الگوریتم انتخاب خودکار خانواده شبکه را غیرفعال میکند مگر آنکه گزینههای اتصال صراحتاً آن را فعال کنند.
--no-require-module- پشتیبانی از بارگذاری همگام گراف ماژول ES در require() را غیرفعال میکند. بخش بارگذاری ماژولهای ECMAScript با استفاده از require() را ببینید.
--no-strip-types- حذف انواع (type-stripping) را برای فایلهای TypeScript غیرفعال میکند. برای اطلاعات بیشتر، مستندات type-stripping در TypeScript را ببینید.
--no-warnings- تمام هشدارهای فرایند (شامل هشدارهای منسوخشدگی) را بیصدا میکند.
--node-memory-debug- بررسیهای اشکالزدایی اضافی برای نشت حافظه در بخشهای داخلی Node.js را فعال میکند. این گزینه معمولاً فقط برای توسعهدهندگانی که خود Node.js را اشکالزدایی میکنند کاربرد دارد.
--openssl-config=file- یک فایل پیکربندی OpenSSL را در زمان راهاندازی بارگذاری میکند. این فایل میتواند یک ارائهدهنده FIPS در OpenSSL 3 را فعال کند یا یک بیلد OpenSSL 1.1.1 با قابلیت FIPS را پیکربندی نماید. حالت FIPS را ببینید. این گزینه بر متغیر محیطی OPENSSL_CONF اولویت دارد.
--openssl-legacy-provider- ارائهدهنده موروثی (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) را صادر میکند. هشدارهای منسوخشدگی معلق عموماً با منسوخشدگی زمان اجرا یکسان هستند، با این استثنای قابل توجه که بهطور پیشفرض خاموش هستند و منتشر نمیشوند مگر اینکه یا فلگ خط فرمان --pending-deprecation یا متغیر محیطی NODE_PENDING_DEPRECATION=1 تنظیم شده باشد. هشدارهای منسوخشدگی معلق برای ارائه نوعی مکانیزم گزینشی "هشدار زودهنگام" استفاده میشوند که توسعهدهندگان میتوانند از آن برای تشخیص کاربرد ایپیآیهای منسوخ بهره ببرند.
--permission- مدل مجوزها
(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
--permission-audit- حالت حسابرسی (audit mode) را برای مدل مجوزها فعال میکند. هنگام فعال بودن، بررسیهای مجوز انجام میشوند اما دسترسی مسدود نمیشود — هیچ خطای ERR_ACCESS_DENIED صادر نمیشود. در عوض، هر نقض مجوز از طریق ماژول node:diagnostics_channel منتشر میشود و اجرا بهطور عادی ادامه مییابد. این فلگ نیازی به تعیین --permission ندارد. فلگهای --allow-* در حالت حسابرسی مورد نیاز نیستند، زیرا هیچ دسترسی رد نمیشود. حالت حسابرسی برای پی بردن به مجوزهای مورد نیاز برنامه شما پیش از استقرار با --permission مفید است. مستندات Permission Model را برای فهرست نام کانالهای تشخیصی و فرمت پیامها ببینید. اگر هر دو فلگ --permission و --permission-audit مشخص شوند، فلگ --permission اولویت داشته و مدل مجوزها در حالت اجباری (enforce) اجرا میشود.
--preserve-symlinks- به لودر
ماژول
دستور
میدهد تا
هنگام حل و
کش کردن
ماژولها،
پیوندهای
نمادین (symbolic links)
را حفظ کند.
بهطور
پیشفرض،
هنگامی که Node.js
ماژولی را
از مسیری که
به صورت
نمادین به
مکان دیگری
روی دیسک
پیوند دارد
بارگذاری
میکند،
پیوند را
دنبال کرده
و از مسیر
واقعی
فیزیکی
ماژول هم به
عنوان یک
شناسه و هم
به عنوان
مسیر ریشه
برای یافتن
ماژولهای
وابستگی
دیگر
استفاده
میکند. در
بیشتر
موارد، این
رفتار
پیشفرض
قابل قبول
است. با این
حال هنگام
استفاده از
پیوندهای
نمادین peer dependencies،
همانطور
که در مثال
زیر نشان
داده شده
است، رفتار
پیشفرض
باعث صدور
استثنا در
صورتی
میشود که
moduleA تلاش کند
moduleB را به
عنوان یک peer dependency
فراخوانی
کند:
فلگ خط فرمان --preserve-symlinks به Node.js دستور میدهد تا به جای مسیر واقعی، از مسیر پیوند نمادین برای ماژولها استفاده کند و بدین ترتیب اجازه میدهد peer dependencies پیوندیافته نمادین پیدا شوند. با این حال توجه داشته باشید که استفاده از --preserve-symlinks میتواند عوارض جانبی دیگری داشته باشد. به ویژه، ماژولهای بومی پیوندیافته نمادین ممکن است در صورتی که از بیش از یک مکان در درخت وابستگی پیوند شده باشند در بارگذاری شکست بخورند (Node.js آنها را به عنوان دو ماژول جداگانه میبیند و تلاش میکند ماژول را چندین بار بارگذاری کند که منجر به صدور استثنا میشود). فلگ --preserve-symlinks روی ماژول اصلی اعمال نمیشود که این اجازه میدهد node --preserve-symlinks node_module/.bin/<foo> کار کند. برای اعمال همین رفتار برای ماژول اصلی، از --preserve-symlinks-main نیز استفاده کنید.
{appDir} ├── app │ ├── index.js │ └── node_modules │ ├── moduleA -> {appDir}/moduleA │ └── moduleB │ ├── index.js │ └── package.json └── moduleA ├── index.js └── package.json --preserve-symlinks-main- به لودر ماژول دستور میدهد تا هنگام حل و کش کردن ماژول اصلی (require.main)، پیوندهای نمادین را حفظ کند. این فلگ وجود دارد تا ماژول اصلی بتواند رفتاری مشابه با آنچه --preserve-symlinks برای همه ایمپورتهای دیگر فراهم میکند داشته باشد؛ اما برای سازگاری عقروعلی با نسخههای قدیمیتر Node.js، اینها فلگهای جداگانهای هستند. گزینه --preserve-symlinks-main متضمن --preserve-symlinks نیست؛ زمانی که تمایلی به دنبال کردن پیوندهای نمادین پیش از حل مسیرهای نسبی ندارید، از --preserve-symlinks-main علاوه بر --preserve-symlinks استفاده کنید. برای اطلاعات بیشتر --preserve-symlinks را ببینید.
-p,--printscript- مشابه -e است اما نتیجه را چاپ میکند.
--prof- تولید خروجی پروفایلر V8.
--prof-process- پردازش خروجی پروفایلر V8 تولیدشده با استفاده از گزینه --prof در V8.
--redirect-warnings=file- هشدارهای فرایند را به جای چاپ در stderr در فایل ارائهشده مینویسد. اگر فایل وجود نداشته باشد ایجاد میشود، و اگر وجود داشته باشد به انتهای آن افزوده خواهد شد. اگر هنگام تلاش برای نوشتن هشدار در فایل خطایی رخ دهد، هشدار به جای آن در stderr نوشته خواهد شد. نام file میتواند یک مسیر مطلق باشد. اگر نباشد، دایرکتوری پیشفرضی که در آن نوشته میشود توسط گزینه خط فرمان --diagnostic-dir کنترل میشود.
--report-compact- گزارشها را در فرمتی فشرده به صورت JSON تکخطی مینویسد که برای سیستمهای پردازش لاگ نسبت به فرمت چندخطی پیشفرض (طراحیشده برای خواندن انسان) راحتتر قابل مصرف است.
--report-dir=directory,--report-directory=directory- مکانی که گزارش در آن تولید خواهد شد.
--report-exclude-env- هنگامی که --report-exclude-env ارسال شود، گزارش تشخیصی تولیدشده حاوی دادههای environmentVariables نخواهد بود.
--report-exclude-network- حذف header.networkInterfaces از گزارش تشخیصی. بهطور پیشفرض این گزینه تنظیم نشده است و رابطهای شبکه گنجانده میشوند.
--report-filename=filename- نام فایلی که گزارش در آن نوشته خواهد شد. اگر نام فایل روی 'stdout' یا 'stderr' تنظیم شود، گزارش به ترتیب در stdout یا stderr فرایند نوشته میشود.
--report-on-fatalerror- تولید گزارش را در هنگام بروز خطاهای مهلک (خطاهای داخلی درون محیط اجرای Node.js مانند اتمام حافظه) که منجر به توقف برنامه میشوند فعال میکند. برای بررسی عناصر تشخیصی مختلف مانند هیپ، پشته، وضعیت حلقه رویداد، مصرف منابع و غیره جهت تحلیل خطای مهلک بسیار مفید است.
--report-on-signal- تولید گزارش را با دریافت سیگنال مشخصشده (یا از پیش تعریفشده) توسط فرایند در حال اجرای Node.js فعال میکند. سیگنال فعالکننده گزارش از طریق --report-signal تعیین میشود.
--report-signal=signal- سیگنال تولید گزارش را تنظیم یا بازنشانی میکند (در ویندوز پشتیبانی نمیشود). سیگنال پیشفرض SIGUSR2 است.
--report-uncaught-exception- تولید گزارش را در هنگام خروج فرایند به دلیل یک استثنای مدیریتنشده (uncaught exception) فعال میکند. برای بررسی پشته جاوااسکریپت همراه با پشته بومی و سایر دادههای محیط اجرا مفید است.
-r,--requiremodule- ماژول مشخصشده را در زمان راهاندازی از پیش بارگذاری میکند. از قوانین حل ماژول در require() پیروی میکند. پارامتر module میتواند یک مسیر به فایل یا نام یک ماژول node باشد. ماژولهای پیشبارگذاریشده با --require پیش از ماژولهای پیشبارگذاریشده با --import اجرا میشوند. ماژولها در ریسمان اصلی و همچنین در تمام ریسمانهای کارگر، فرایندهای انشعابیافته (forked) یا خوشهای پیشبارگذاری میشوند.
--run- یک دستور
مشخص را از
شیء "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
--secure-heap-min=n- هنگام استفاده از --secure-heap، فلگ --secure-heap-min حداقل تخصیص را از هیپ امن مشخص میکند. حداقل مقدار 2 است. حداکثر مقدار کوچکترِ بین --secure-heap یا 2147483647 است. مقدار ارائهشده باید توانی از دو باشد.
--secure-heap=n- یک هیپ امن OpenSSL با اندازه n بایت را مقداردهی اولیه میکند. هنگام مقداردهی اولیه، هیپ امن برای انواع خاصی از تخصیصها درون OpenSSL در حین تولید کلید و سایر عملیاتها استفاده میشود. این برای مثال جهت جلوگیری از نشت اطلاعات حساس ناشی از سرریز یا زیرریز اشارهگرها مفید است. هیپ امن اندازه ثابتی دارد و در زمان اجرا قابل تغییر اندازه نیست، بنابراین در صورت استفاده، مهم است که هیپ به اندازه کافی بزرگ انتخاب شود تا همه کاربردهای برنامه را پوشش دهد. اندازه هیپ ارائهشده باید توانی از دو باشد. هر مقداری کمتر از 2 هیپ امن را غیرفعال میکند. هیپ امن بهطور پیشفرض غیرفعال است. هیپ امن در ویندوز در دسترس نیست. برای جزئیات بیشتر CRYPTO_secure_malloc_init را ببینید.
--snapshot-blob=path- هنگامی که
همراه با
--build-snapshot
استفاده
شود، --snapshot-blob
مسیری را
مشخص
میکند که
بلاب
اسنپشات
تولیدشده
در آن نوشته
میشود. در
صورت عدم
تعیین،
بلاب
تولیدشده
در snapshot.blob در
دایرکتوری
کاری جاری
نوشته
خواهد شد.
هنگامی که
بدون --build-snapshot
استفاده
شود، --snapshot-blob
مسیری را به
بلابی مشخص
میکند که
برای
بازیابی
وضعیت
برنامه
استفاده
میشود.
هنگام
بارگذاری
اسنپشات،
Node.js بررسی
میکند که:
- نسخه، معماری و پلتفرم باینری در حال اجرای Node.js دقیقاً مشابه باینری تولیدکننده اسنپشات باشد.
- فلگهای V8 و ویژگیهای CPU با باینری تولیدکننده اسنپشات سازگار باشند.
--test- اجراکننده تست خط فرمان Node.js را آغاز میکند. این فلگ را نمیتوان با --watch-path، --check، --eval، --interactive یا بازرس ترکیب کرد. برای جزئیات بیشتر، مستندات اجرای آزمایشها از خط فرمان را ببینید.
--test-concurrency- حداکثر تعداد فایلهای آزمایشی که CLI اجراکننده آزمون بهطور همزمان اجرا خواهد کرد. اگر --test-isolation روی 'none' تنظیم شده باشد، این فلگ نادیده گرفته شده و همایندی یک خواهد بود. در غیر این صورت، همایندی بهطور پیشفرض برابر با os.availableParallelism() - 1 است.
--test-coverage-branches=threshold- درصد حداقلی از شاخههای پوششدادهشده را الزامی میکند. اگر پوشش کد به آستانه مشخصشده نرسد، فرایند با کد 1 خارج خواهد شد.
--test-coverage-exclude- 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.
--test-coverage-functions=threshold- Require a minimum percent of covered functions. If code coverage does not reach the threshold specified, the process will exit with code 1.
--test-coverage-include- 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.
--test-coverage-include-all- 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.
--test-coverage-lines=threshold- Require a minimum percent of covered lines. If code coverage does not reach the threshold specified, the process will exit with code 1.
--test-force-exit- Configures the test runner to exit the process once all known tests have finished executing even if the event loop would otherwise remain active.
--test-global-setup=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.
--test-isolation=mode- نوع جداسازی آزمایش مورد استفاده در test runner را پیکربندی میکند. هنگامی که mode برابر با 'process' باشد، هر فایل تست در یک فرایند فرزند جداگانه اجرا میشود. هنگامی که mode برابر با 'none' باشد، تمام فایلهای تست در همان فرایند اجراکننده آزمایش اجرا میشوند. حالت پیشفرض جداسازی 'process' است. این فلگ در صورت عدم وجود فلگ --test نادیده گرفته میشود. برای اطلاعات بیشتر بخش مدل اجرای test runner را ببینید.
--test-name-pattern- یک عبارت باقاعده که اجراکننده آزمایش را پیکربندی میکند تا فقط آزمایشهایی را اجرا کند که نام آنها با الگوی ارائهشده مطابقت دارد. مستندات فیلتر کردن آزمایشها بر اساس نام را برای جزئیات بیشتر ببینید. اگر هر دو گزینه --test-name-pattern و --test-skip-pattern ارائه شوند، آزمایشها برای اجرا باید هر دو شرط را برآورده کنند.
--test-only- اجراکننده آزمایش را پیکربندی میکند تا فقط آزمایشهای سطح بالایی را اجرا کند که گزینه only در آنها تنظیم شده است. این فلگ هنگامی که جداسازی تست غیرفعال باشد لازم نیست.
--test-random-seed- مقدار seed مورد استفاده برای تصادفیسازی ترتیب اجرای آزمایشها را تنظیم میکند. این مورد هم بر ترتیب اجرای فایلهای آزمایشی و هم آزمایشهای صفبندیشده درون هر فایل اعمال میشود. ارائه این فلگ تصادفیسازی را حتی بدون --test-randomize بهطور ضمنی فعال میکند. مقدار باید یک عدد صحیح بین 0 و 4294967295 باشد. این فلگ را نمیتوان همراه با --watch یا --test-rerun-failures استفاده کرد.
--test-randomize- ترتیب اجرای آزمایشها را تصادفی میکند. این مورد هم بر ترتیب اجرای فایلهای آزمایشی و هم آزمایشهای صفبندیشده درون هر فایل اعمال میشود. این میتواند به تشخیص آزمایشهایی که به وضعیت مشترک یا ترتیب اجرا وابسته هستند کمک کند. مقدار seed مورد استفاده برای تصادفیسازی در خلاصه آزمایش چاپ میشود و میتواند با --test-random-seed مجدداً استفاده گردد. برای رفتار تفصیلی و مثالها، تصادفیسازی ترتیب اجرای آزمایشها را ببینید. این فلگ را نمیتوان همراه با --watch یا --test-rerun-failures استفاده کرد.
--test-reporter- یک گزارشدهنده آزمایش برای استفاده در حین اجرای تستها. مستندات گزارشدهندههای آزمون را برای جزئیات بیشتر ببینید.
--test-reporter-destination- مقصد گزارشدهنده آزمایش متناظر. مستندات گزارشدهندههای آزمون را برای جزئیات بیشتر ببینید.
--test-rerun-failures- مسیری به یک فایل که به test runner اجازه میدهد وضعیت مجموعه آزمایش را بین اجراها ذخیره کند. اجراکننده آزمون از این فایل برای تعیین اینکه کدام آزمایشها قبلاً موفق یا ناموفق بودهاند استفاده خواهد کرد، که امکان اجرای مجدد آزمایشهای ناموفق بدون نیاز به اجرای مجدد کل مجموعه آزمایش را فراهم میسازد. اجراکننده آزمایش در صورت عدم وجود این فایل، آن را ایجاد خواهد کرد. مستندات اجرای مجدد تستها را برای جزئیات بیشتر ببینید.
--test-shard- تکه (shard)
مجموعه
آزمون برای
اجرا در
قالب
<index>/<total>، که
در آن:
- index یک عدد صحیح مثبت، شاخص بخشهای تقسیمشده است.
- total یک عدد صحیح مثبت، مجموع بخشهای تقسیمشده است.
node --test --test-shard=1/3 node --test --test-shard=2/3 node --test --test-shard=3/3
--test-skip-pattern- یک عبارت باقاعده که اجراکننده آزمون را پیکربندی میکند تا از آزمایشهایی که نام آنها با الگوی ارائهشده مطابقت دارد صرفنظر کند. مستندات فیلتر کردن آزمایشها بر اساس نام را برای جزئیات بیشتر ببینید. اگر هر دو گزینه --test-name-pattern و --test-skip-pattern ارائه شوند، آزمایشها برای اجرا باید هر دو شرط را برآورده کنند.
--test-timeout- تعداد میلیثانیههایی که پس از آن اجرای تست شکست میخورد. در صورت عدم تعیین، زیرتستها این مقدار را از والد خود به ارث میبرند. مقدار پیشفرض Infinity است.
--test-update-snapshots- فایلهای اسنپشات مورد استفاده توسط اجراکننده آزمایش برای تست اسنپشات را مجدداً تولید میکند.
--throw-deprecation- پرتاب خطا برای هشدارهای منسوخشدگی.
--title=title- تنظیم process.title در زمان راهاندازی.
--tls-cipher-list=list- یک فهرست جایگزین رمزهای پیشفرض TLS را مشخص میکند. نیازمند آن است که Node.js با پشتیبانی از رمزنگاری (پیشفرض) بیلد شده باشد.
--tls-keylog=file- دادههای کلید TLS را در یک فایل ثبت میکند. دادههای کلید در قالب SSLKEYLOGFILE مربوط به NSS هستند و میتوانند توسط نرمافزارهایی (مانند Wireshark) برای رمزگشایی ترافیک TLS استفاده شوند.
--tls-max-v1.2- تنظیم tls.DEFAULT_MAX_VERSION به 'TLSv1.2'. برای غیرفعالسازی پشتیبانی از TLSv1.3 استفاده میشود.
--tls-max-v1.3- تنظیم پیشفرض tls.DEFAULT_MAX_VERSION به 'TLSv1.3'. برای فعالسازی پشتیبانی از TLSv1.3 استفاده میشود.
--tls-min-v1.0- تنظیم پیشفرض tls.DEFAULT_MIN_VERSION به 'TLSv1'. برای سازگاری با کلاینتها یا سرورهای قدیمی TLS استفاده میشود.
--tls-min-v1.1- تنظیم پیشفرض tls.DEFAULT_MIN_VERSION به 'TLSv1.1'. برای سازگاری با کلاینتها یا سرورهای قدیمی TLS استفاده میشود.
--tls-min-v1.2- تنظیم پیشفرض tls.DEFAULT_MIN_VERSION به 'TLSv1.2'. این مقدار پیشفرض برای نسخههای 12.x و بالاتر است، اما گزینه برای سازگاری با نسخههای قدیمیتر Node.js پشتیبانی میشود.
--tls-min-v1.3- تنظیم پیشفرض tls.DEFAULT_MIN_VERSION به 'TLSv1.3'. برای غیرفعالسازی پشتیبانی از TLSv1.2 که به اندازه TLSv1.3 امن نیست استفاده میشود.
--trace-deprecation- چاپ ردگیری پشته برای هشدارهای منسوخشدگی.
--trace-env- اطلاعات
مربوط به
هرگونه
دسترسی به
متغیرهای
محیطی در
نمونه جاری
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، ردگیری پشته جاوااسکریپتِ دسترسی را نیز چاپ میکند.
--trace-env-native-stack- علاوه بر عملکرد --trace-env، ردگیری پشته بومی دسترسی را نیز چاپ میکند.
--trace-event-categories- فهرستی جداشده با کاما از دستههایی که باید هنگام فعال بودن ردگیری رویدادها با استفاده از --trace-events-enabled ردگیری شوند.
--trace-event-file-pattern- رشته الگوی مشخصکننده مسیر فایل برای دادههای رویداد ردگیری؛ از ${rotation} و ${pid} پشتیبانی میکند.
--trace-events-enabled- جمعآوری اطلاعات ردگیری رویدادها را فعال میکند.
--trace-exit- هر زمان که یک محیط به صورت پیشگیرانه خارج شود، یعنی با فراخوانی process.exit()، یک ردگیری پشته چاپ میکند.
--trace-require-module=mode- اطلاعات مربوط به بارگذاری ماژولهای ECMAScript با استفاده از require() را چاپ میکند. هنگامی که mode برابر با all باشد، تمام کاربردها چاپ میشوند. هنگامی که mode برابر با no-node-modules باشد، استفادههای پوشه node_modules مستثنی میشوند.
--trace-sigint- یک ردگیری پشته هنگام دریافت SIGINT چاپ میکند.
--trace-sync-io- هر زمان که ورودی/خروجی همگام پس از نخستین دور حلقه رویداد تشخیص داده شود، یک ردگیری پشته چاپ میکند.
--trace-tls- اطلاعات ردگیری بستههای TLS را در stderr چاپ میکند. میتوان از آن برای اشکالزدایی مشکلات اتصال TLS استفاده کرد.
--trace-uncaught- چاپ ردگیری پشته برای استثناهای مدیریتنشده؛ معمولاً ردگیری پشته مرتبط با ایجاد یک Error چاپ میشود، در حالی که این گزینه باعث میشود Node.js همچنین ردگیری پشته مرتبط با پرتاب مقدار را نیز چاپ کند (که لزوماً نیازی نیست یک نمونه از Error باشد). فعالسازی این گزینه ممکن است تأثیر منفی بر رفتار زبالهروبی بگذارد.
--trace-warnings- چاپ ردگیری پشته برای هشدارهای فرایند (شامل هشدارهای منسوخشدگی).
--track-heap-objects- ردگیری تخصیص اشیاء هیپ برای اسنپشاتهای هیپ.
--unhandled-rejections=mode- استفاده از
این فلگ
اجازه
میدهد تا
تعیین کنید
هنگام بروز
یک ردشدن
مدیریتنشده
(unhandled rejection) چه
اتفاقی
بیفتد. یکی
از
حالتهای
زیر را
میتوان
انتخاب کرد:
- throw: انتشار unhandledRejection. اگر این قلاب تنظیم نشده باشد، ردشدن مدیریتنشده را به عنوان یک استثنای مدیریتنشده مطرح میکند. این حالت پیشفرض است.
- strict: ردشدن مدیریتنشده را به عنوان یک استثنای مدیریتنشده مطرح میکند. اگر استثنا مدیریت شود، unhandledRejection منتشر میشود.
- warn: همیشه یک هشدار را تحریک میکند، چه قلاب unhandledRejection تنظیم شده باشد چه نباشد، اما هشدار منسوخشدگی را چاپ نمیکند.
- warn-with-error-code: انتشار unhandledRejection. اگر این قلاب تنظیم نشده باشد، یک هشدار صادر کرده و کد خروج فرایند را به 1 تنظیم میکند.
- none: تمام هشدارها را بیصدا میکند.
--use-bundled-ca,--use-openssl-ca- استفاده از مخزن CA موزیلا ارائهشده همراه با نسخه جاری Node.js یا استفاده از مخزن پیشفرض CA در OpenSSL. مخزن پیشفرض در زمان بیلد قابل انتخاب است. مخزن CA همراه با برنامه، آنگونه که توسط Node.js عرضه میشود، یک اسنپشات از مخزن CA موزیلا است که در زمان انتشار تثبیت شده است. این در تمام پلتفرمهای پشتیبانیشده یکسان است. استفاده از مخزن OpenSSL اجازه اصلاحات خارجی در مخزن را میدهد. برای بیشتر توزیعهای لینوکس و BSD، این مخزن توسط نگهدارندگان توزیع و مدیران سیستم نگهداری میشود. مکان مخزن CA در OpenSSL به پیکربندی کتابخانه OpenSSL وابسته است اما میتوان آن را در زمان اجرا با استفاده از متغیرهای محیطی تغییر داد. بخشهای SSL_CERT_DIR و SSL_CERT_FILE را ببینید.
--use-env-proxy- هنگام فعال بودن، Node.js متغیرهای محیطی HTTP_PROXY، HTTPS_PROXY و NO_PROXY را در حین راهاندازی تجزیه کرده و درخواستها را از طریق پروکسی مشخصشده هدایت میکند. تنها با پروکسیهایی استفاده کنید که برای استقرار مورد اعتماد و مجاز هستند. پشتیبانی از پروکسی برای دسترسی به شبکههای خارجی از طریق سرورهای پروکسی مجاز در نظر گرفته شده است، برای مثال هنگامی که فایروال به آن نیاز دارد. این برای پنهان کردن ترافیک یا دور زدن خطمشی شبکه نیست. بخش Built-in Proxy Support را ببینید. این معادل با تنظیم متغیر محیطی NODE_USE_ENV_PROXY=1 است. هنگام تنظیم هر دو، گزینه --use-env-proxy اولویت دارد.
--use-largepages=mode- نگاشت مجدد
کد استاتیک
Node.js به صفحات
بزرگ حافظه
در زمان
راهاندازی.
در صورت
پشتیبانی
در سیستم
هدف، این
باعث
میشود که
کد استاتیک
Node.js به جای
صفحات 4 KiB به
صفحات 2 MiB
منتقل شود.
مقادیر زیر
برای mode
معتبر
هستند:
- off: هیچ نگاشتی انجام نخواهد شد. این حالت پیشفرض است.
- on: در صورت پشتیبانی سیستمعامل، نگاشت انجام خواهد شد. عدم موفقیت در نگاشت نادیده گرفته شده و پیامی در خطای استاندارد چاپ میشود.
- silent: در صورت پشتیبانی سیستمعامل، نگاشت انجام خواهد شد. عدم موفقیت در نگاشت نادیده گرفته شده و گزارش نخواهد شد.
--use-system-ca- نودجیاس
از
گواهیهای
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 --watch-path=./src --watch-path=./tests index.js
پاک کردن کنسول را هنگامی که حالت نظارت فرایند را دوباره راهاندازی میکند غیرفعال میسازد.
node --watch --watch-preserve-output test.js
محیط (ENVIRONMENT)
FORCE_COLOR[1, 2, 3]- متغیر
محیطی FORCE_COLOR
برای
فعالسازی
خروجی رنگی
ANSI استفاده
میشود.
مقدار
میتواند
یکی از
موارد زیر
باشد:
- 1، true یا رشته خالی '' برای پشتیبانی از ۱۶ رنگ،
- 2 برای پشتیبانی از ۲۵۶ رنگ، یا
- 3 برای پشتیبانی از ۱۶ میلیون رنگ.
NODE_COMPILE_CACHEdir- کش کامپایل ماژول را برای نمونه Node.js فعال میکند. برای جزئیات، مستندات کش کامپایل ماژول را ببینید.
NODE_COMPILE_CACHE_PORTABLE1- هنگامی که روی 1 تنظیم شود، کش کامپایل ماژول میتواند در مکانهای دایرکتوری مختلف استفاده مجدد شود تا زمانی که ساختار ماژول نسبت به دایرکتوری کش یکسان بماند، و توسط هر کاربری (زیردایرکتوری کش با شناسه کاربر ایجادکننده پسوندگذاری نمیشود).
NODE_COMPILE_CACHE_READONLY1- هنگامی که روی 1 تنظیم شود، کش کامپایل ماژول فقط ورودیهای موجود را از دایرکتوری خود میخواند: چیزی در آن نوشته نمیشود و در صورت عدم وجود ایجاد نخواهد شد.
NODE_DEBUGmodule[,…]- فهرستی جداشده با ',' از ماژولهای هسته که باید اطلاعات اشکالزدایی را چاپ کنند.
NODE_DEBUG_NATIVEmodule[,…]- فهرستی جداشده با ',' از ماژولهای هسته ++C که باید اطلاعات اشکالزدایی را چاپ کنند.
NODE_DISABLE_COLORS1- هنگامی که تنظیم شود، از رنگها در REPL استفاده نخواهد شد.
NODE_DISABLE_COMPILE_CACHE1- کش کامپایل ماژول را برای نمونه Node.js غیرفعال میکند. برای جزئیات، مستندات کش کامپایل ماژول را ببینید.
NODE_EXTRA_CA_CERTSfile- هنگامی که تنظیم شود، مراجع صدور گواهی ریشه شناختهشده (مانند VeriSign) با گواهیهای اضافی در file گسترش مییابند. فایل باید شامل یک یا چند گواهی معتمد در قالب PEM باشد. در صورتی که فایل مفقود یا ناقص باشد، یک پیام (یکبار) با process.emitWarning() صادر میشود، اما سایر خطاها نادیده گرفته خواهند شد. نه گواهیهای شناختهشده و نه گواهیهای اضافی زمانی که ویژگی ca در گزینهها صراحتاً برای یک کلاینت یا سرور TLS یا HTTPS مشخص شده باشد استفاده نمیشوند. این متغیر محیطی هنگامی که node به صورت setuid root اجرا شود یا دارای قابلیتهای فایل لینوکس باشد نادیده گرفته میشود. متغیر محیطی NODE_EXTRA_CA_CERTS فقط هنگام راهاندازی اولیه فرایند Node.js خوانده میشود. تغییر مقدار در زمان اجرا با استفاده از process.env.NODE_EXTRA_CA_CERTS هیچ تأثیری بر فرایند جاری ندارد.
NODE_ICU_DATAfile- مسیر داده برای دادههای ICU (شیء Intl). در صورت کامپایل با پشتیبانی small-icu، دادههای پیوندیافته را گسترش میدهد.
NODE_NO_WARNINGS1- هنگامی که روی 1 تنظیم شود، هشدارهای فرایند بیصدا میشوند.
NODE_OPTIONSoptions...- فهرستی از
گزینههای
خط فرمان که
با فاصله
جدا
شدهاند.
مقادیر options...
قبل از
گزینههای
خط فرمان
تفسیر
میشوند،
بنابراین
گزینههای
خط فرمان بر
هر چیزی در
options... اولویت
خواهند
داشت یا پس
از آن اعمال
میشوند. Node.js
در صورت
استفاده از
گزینهای
که در محیط
مجاز نیست،
مانند -p یا
یک فایل
اسکریپت،
با خطا خارج
میشود. اگر
مقدار یک
گزینه حاوی
فاصله
باشد،
میتوان با
استفاده از
علامت
نقلقول
دوگانه آن
را اسکیپ
کرد:
یک فلگ تکگانه ارسالشده به عنوان گزینه خط فرمان بر همان فلگ ارسالشده در NODE_OPTIONS اولویت خواهد داشت:
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.js در فهرست زیر آمدهاند. اگر گزینهای از هر دو نوع --XX و --no-XX پشتیبانی کند، هر دو پشتیبانی میشوند اما فقط یکی در فهرست زیر گنجانده شده است:NODE_OPTIONS='--require "./a.js"' node --require "./b.js" # is equivalent to: node --require "./a.js" --require "./b.js"
- --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
- --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
NODE_PATHpath[:…]- فهرستی جداشده با ':' از دایرکتوریها که به مسیر جستجوی ماژول اضافه میشوند. در ویندوز، این فهرست با ';' جدا میشود.
NODE_PENDING_DEPRECATION1- هنگامی که روی 1 تنظیم شود، هشدارهای منسوخشدگی معلق را صادر میکند. هشدارهای منسوخشدگی معلق عموماً با منسوخشدگیهای زمان اجرا یکسان هستند، با این استثنای قابل توجه که بهطور پیشفرض خاموش هستند و منتشر نمیشوند مگر اینکه یا فلگ خط فرمان --pending-deprecation یا متغیر محیطی NODE_PENDING_DEPRECATION=1 تنظیم شده باشد. هشدارهای منسوخشدگی معلق برای ارائه نوعی مکانیزم گزینشی "هشدار زودهنگام" استفاده میشوند که توسعهدهندگان میتوانند از آن برای تشخیص کاربرد ایپیآیهای منسوخ بهره ببرند.
NODE_PENDING_PIPE_INSTANCESinstances- تعداد هندلهای معلق نمونههای پایپ را هنگامی که سرور پایپ در انتظار اتصالات است تنظیم میکند. این تنظیم فقط برای ویندوز اعمال میشود.
NODE_PRESERVE_SYMLINKS1- هنگامی که روی 1 تنظیم شود، به لودر ماژول دستور میدهد تا هنگام حل و کش کردن ماژولها، پیوندهای نمادین را حفظ کند.
NODE_REDIRECT_WARNINGSfile- هنگامی که تنظیم شود، هشدارهای فرایند به جای چاپ در stderr در فایل ارائهشده صادر میشوند. اگر فایل وجود نداشته باشد ایجاد شده و اگر وجود داشته باشد به انتهای آن افزوده میشود. اگر هنگام تلاش برای نوشتن هشدار در فایل خطایی رخ دهد، هشدار به جای آن در stderr نوشته خواهد شد. این معادل با استفاده از فلگ خط فرمان --redirect-warnings=file است.
NODE_REPL_EXTERNAL_MODULEfile- مسیری به یک ماژول Node.js که به جای REPL توکار بارگذاری خواهد شد. تنظیم این مقدار به یک رشته خالی ('') از REPL توکار استفاده خواهد کرد.
NODE_REPL_HISTORYfile- مسیری به فایل مورد استفاده برای ذخیره تاریخچه ماندگار REPL. مسیر پیشفرض ~/.node_repl_history است که توسط این متغیر بازنویسی میشود. تنظیم مقدار به یک رشته خالی ('' یا ' ') تاریخچه ماندگار REPL را غیرفعال میکند.
NODE_SKIP_PLATFORM_CHECKvalue- اگر value برابر با '1' باشد، بررسی پلتفرم پشتیبانیشده در زمان راهاندازی Node.js نادیده گرفته میشود. ممکن است Node.js به درستی اجرا نشود. هرگونه مشکلی که در پلتفرمهای پشتیبانینشده رخ دهد رفع نخواهد شد.
NODE_TEST_CONTEXTvalue- اگر value برابر با 'child' باشد، گزینههای test reporter بازنویسی شده و خروجی آزمون در قالب TAP به stdout ارسال میشود. اگر هر مقدار دیگری ارائه شود، Node.js هیچ تضمینی درباره قالب گزارشدهنده مورد استفاده یا پایداری آن ارائه نمیدهد.
NODE_TLS_REJECT_UNAUTHORIZEDvalue- اگر value برابر با '0' باشد، اعتبارسنجی گواهی برای اتصالات TLS غیرفعال میشود. این امر TLS و به تبع آن HTTPS را ناامن میسازد. استفاده از این متغیر محیطی شدیداً نکوهش میشود.
NODE_USE_ENV_PROXY1- هنگام فعال بودن، Node.js متغیرهای محیطی HTTP_PROXY، HTTPS_PROXY و NO_PROXY را در حین راهاندازی تجزیه کرده و درخواستها را از طریق پروکسی مشخصشده هدایت میکند. تنها با پروکسیهایی استفاده کنید که برای استقرار مورد اعتماد و مجاز هستند. پشتیبانی از پروکسی برای دسترسی به شبکههای خارجی از طریق سرورهای پروکسی مجاز در نظر گرفته شده است، برای مثال هنگامی که یک فایروال به آن نیاز دارد. این برای پنهان کردن ترافیک یا دور زدن خطمشی شبکه نیست. بخش Built-in Proxy Support را ببینید. این همچنین میتواند با استفاده از فلگ خط فرمان --use-env-proxy فعال شود. هنگامی که هر دو تنظیم شده باشند، --use-env-proxy اولویت دارد.
NODE_USE_SYSTEM_CA1- نودجیاس از گواهیهای CA معتمد موجود در مخزن سیستم همراه با گزینه --use-bundled-ca و متغیر محیطی NODE_EXTRA_CA_CERTS استفاده میکند. این همچنین میتواند با استفاده از فلگ خط فرمان --use-system-ca فعال شود. هنگامی که هر دو تنظیم شده باشند، --use-system-ca اولویت دارد.
NODE_V8_COVERAGEdir- هنگامی که تنظیم شود، Node.js شروع به خروجی دادن پوشش کد جاوااسکریپت V8 و دادههای Source Map به دایرکتوری ارائهشده به عنوان آرگومان میکند (اطلاعات پوشش به صورت JSON در فایلهایی با پیشوند coverage نوشته میشوند). متغیر NODE_V8_COVERAGE بهطور خودکار به زیرفرایندها انتشار مییابد و ابزارسازی برنامههایی را که خانواده توابع child_process.spawn() را فراخوانی میکنند آسانتر میسازد. NODE_V8_COVERAGE را میتوان روی یک رشته خالی تنظیم کرد تا از انتشار جلوگیری شود.
NO_COLOR<any>- متغیر NO_COLOR نام مستعاری برای NODE_DISABLE_COLORS است. مقدار این متغیر محیطی اختیاری است.
OPENSSL_CONFfile- بارگذاری یک فایل پیکربندی OpenSSL در زمان راهاندازی. این فایل میتواند به عنوان بخشی از پیکربندی حالت FIPS استفاده شود. اگر متغیر روی یک مقدار خالی تنظیم شود، Node.js بدون بارگذاری هیچ فایل پیکربندی OpenSSL شروع به کار میکند. این روشی برای گذر از یک فایل پیکربندی پیشفرض است که وجود دارد اما قابل خواندن نیست، به عنوان مثال زمانی که /etc/ssl برای کاربری که Node.js تحت آن اجرا میشود در دسترس نیست که در غیر این صورت در زمان راهاندازی مهلک خواهد بود. در آن حالت هیچ پیکربندی اعمال نمیشود، از جمله هرگونه راهاندازی حالت FIPS که فایل انجام میداده است. اگر گزینه خط فرمان --openssl-config استفاده شود، این متغیر محیطی نادیده گرفته شده و مقدار خالی هیچ تأثیری نخواهد داشت.
SSL_CERT_DIRdir- اگر --use-openssl-ca فعال باشد، یا اگر --use-system-ca در پلتفرمهایی غیر از macOS و ویندوز فعال باشد، این گزینه دایرکتوری حاوی گواهیهای معتمد OpenSSL را بازنویسی و تنظیم میکند. توجه داشته باشید که مگر در صورتی که محیط فرزند صراحتاً تنظیم شود، این متغیر محیطی توسط هر فرایند فرزندی به ارث برده میشود و اگر آنها از OpenSSL استفاده کنند، ممکن است باعث شود به همان مراجع صدور گواهی مشابه با node اعتماد کنند.
SSL_CERT_FILEfile- اگر --use-openssl-ca فعال باشد، یا اگر --use-system-ca در پلتفرمهایی غیر از macOS و ویندوز فعال باشد، این گزینه فایل حاوی گواهیهای معتمد OpenSSL را بازنویسی و تنظیم میکند. توجه داشته باشید که مگر در صورتی که محیط فرزند صراحتاً تنظیم شود، این متغیر محیطی توسط هر فرایند فرزندی به ارث برده میشود و اگر آنها از OpenSSL استفاده کنند، ممکن است باعث شود به همان مراجع صدور گواهی مشابه با node اعتماد کنند.
TZ- متغیر
محیطی 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)
UV_THREADPOOL_SIZEsize- تعداد
ریسمانهای
مورد
استفاده در
مخزن
ریسمان libuv را
روی size
ریسمان
تنظیم
میکند.
ایپیآیهای
سیستمی
ناهمگام در
صورت امکان
توسط Node.js
استفاده
میشوند،
اما در جایی
که وجود
ندارند، از
مخزن
ریسمان libuv
برای ایجاد
ایپیآیهای
ناهمگام node
بر پایه
ایپیآیهای
سیستمی
همگام
استفاده
میشود.
ایپیآیهای
Node.js که از مخزن
ریسمان
استفاده
میکنند
عبارتند از:
- تمام ایپیآیهای fs، به جز ایپیآیهای ناظر فایل و مواردی که صراحتاً همگام هستند
- ایپیآیهای ناهمگام رمزنگاری مانند crypto.pbkdf2()، crypto.scrypt()، crypto.randomBytes()، crypto.randomFill()، crypto.generateKeyPair()
- تابع dns.lookup()
- تمام ایپیآیهای zlib، به جز مواردی که صراحتاً همگام هستند
اشکالات (BUGS)
اشکالات در GitHub Issues ردیابی میشوند: https://github.com/nodejs/node/issues
حق نشر (COPYRIGHT)
حق نشر برای مشارکتکنندگان Node.js محفوظ است. نودجیاس تحت مجوز MIT در دسترس است.
نودجیاس همچنین شامل کتابخانههای خارجی است که تحت مجوزهای گوناگون عرضه شدهاند. برای مشاهده متن کامل مجوز به نشانی زیر مراجعه کنید: https://github.com/nodejs/node/blob/HEAD/LICENSE
همچنین ببینید (SEE ALSO)
وبسایت: https://nodejs.org
مستندات: https://nodejs.org/api
مخزن گیتهاب و ردیاب مشکلات: https://github.com/nodejs/node
| October 25, 2026 |