util module

تدعم الوحدة node:util احتياجات واجهات برمجة التطبيقات الداخلية Node.js. العديد من الأدوات المساعدة مفيدة لمطوري التطبيقات والوحدات النمطية أيضا. للوصول إليه:

const util = require('node:util');

راجع مصدر

الفصول

MIMEParams

توفر واجهة برمجة تطبيقات MIMEParams حق الوصول للقراءة والكتابة إلى معلمات MIMEType.

MIMEType

تنفيذ فئة MIMEType.

وفقا لاصطلاحات المتصفح، يتم تنفيذ جميع خصائص كائنات MIMEType ك getters و setters على النموذج الأولي للفئة، بدلا من أن تكون خصائص بيانات على العنصر نفسه.

سلسلة MIME هي سلسلة منظمة تحتوي على مكونات متعددة ذات معنى. عند تحليله، يتم إرجاع كائن MIMEType يحتوي على خصائص لكل من هذه المكونات.

TextDecoder

تنفيذ WHATWG Encoding StandardTextDecoder API.

const decoder = new TextDecoder();
const u8arr = new Uint8Array([72, 101, 108, 108, 111]);
console.log(decoder.decode(u8arr)); // Hello
TextEncoder

تنفيذ WHATWG Encoding StandardTextEncoder API. تدعم جميع مثيلات TextEncoder ترميز UTF-8 فقط.

const encoder = new TextEncoder();
const uint8array = encoder.encode('this is some data');

تتوفر فئة TextEncoder أيضا على العنصر العمومي.

الواجهات

CustomPromisifyLegacy
CustomPromisifySymbol
DebugLogger
EncodeIntoResult
InspectOptions
InspectOptionsStylized
ParseArgsConfig

النوع أسماء مستعارة

CustomInspectFunction
CustomPromisify
DebugLoggerFunction
Style

الوظائف

aborted(AbortSignal, any)

يستمع إلى حدث إحباط على signal المقدمة ويرجع وعدا يتم الوفاء به عند إجهاض signal. إذا كان resource الذي تم تمريره عبارة عن قمامة تم جمعها قبل إجهاض signal، يبقى الوعد الذي تم إرجاعه معلقا إلى أجل غير مسمى.

import { aborted } from 'node:util';

const dependent = obtainSomethingAbortable();

aborted(dependent.signal, dependent).then(() => {
  // Do something when dependent is aborted.
});

dependent.on('event', () => {
  dependent.abort();
});
addParamToUrl(string, string, string)

إضافة معلمة إلى عنوان url المحدد

assign(any[])

نسخ قيم كافة الخصائص القابلة للتعداد من كائن مصدر واحد أو أكثر إلى كائن هدف، وإرجاع الكائن الهدف.

autoAuthInEmbedUrl(string)

التحقق من احتواء عنوان url المضمن على autoAuth=true.

callbackify(() => Promise<void>)

تأخذ دالة async (أو دالة ترجع Promise) وترجع دالة باتباع نمط رد الاتصال الأول للخطأ، أي أخذ رد اتصال (err, value) => ... كوسيطة أخيرة. في رد الاتصال، ستكون الوسيطة الأولى هي سبب الرفض (أو null إذا تم حل Promise)، وستكون الوسيطة الثانية هي القيمة التي تم حلها.

const util = require('node:util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

ستتم الطباعة:

hello world

يتم تنفيذ رد الاتصال بشكل غير متزامن، وسيكون له تتبع مكدس محدود. إذا تم طرح رد الاتصال، ستبعث العملية حدث 'uncaughtException'، وإذا لم تتم معالجتها سيتم إنهاء.

نظرا لأن null له معنى خاص باعتباره الوسيطة الأولى لرد الاتصال، إذا رفضت دالة ملفوفة Promise بقيمة مزيفة لسبب ما، يتم التفاف القيمة في Error بالقيمة الأصلية المخزنة في حقل يسمى reason.

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // When the Promise was rejected with `null` it is wrapped with an Error and
  // the original value is stored in `reason`.
  err &#x26;&#x26; Object.hasOwn(err, 'reason') &#x26;&#x26; err.reason === null;  // true
});
callbackify<T1, T2, T3, T4, T5, T6, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>)
callbackify<T1, T2, T3, T4, T5, T6>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>)
callbackify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>)
callbackify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>)
callbackify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>)
callbackify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>)
callbackify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>)
callbackify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3) => Promise<void>)
callbackify<T1, T2, TResult>((arg1: T1, arg2: T2) => Promise<TResult>)
callbackify<T1, T2>((arg1: T1, arg2: T2) => Promise<void>)
callbackify<T1, TResult>((arg1: T1) => Promise<TResult>)
callbackify<T1>((arg1: T1) => Promise<void>)
callbackify<TResult>(() => Promise<TResult>)
createRandomString()

إنشاء سلسلة أحرف عشوائية من 5 إلى 6 أحرف.

debug(string, (fn: DebugLoggerFunction) => void)

يتم استخدام الأسلوب util.debuglog() لإنشاء دالة تكتب رسائل تتبع الأخطاء بشكل مشروط إلى stderr استنادا إلى وجود متغير البيئة NODE_DEBUG. إذا ظهر اسم section ضمن قيمة متغير البيئة هذا، فإن الدالة التي تم إرجاعها تعمل بشكل مشابه console.error(). إذا لم يكن الأمر كما هو، فإن الدالة التي تم إرجاعها هي no-op.

const util = require('node:util');
const debuglog = util.debuglog('foo');

debuglog('hello from foo [%d]', 123);

إذا تم تشغيل هذا البرنامج مع NODE_DEBUG=foo في البيئة، فسيخرج شيئا مثل:

FOO 3245: hello from foo [123]

حيث 3245 هو معرف العملية. إذا لم يتم تشغيله مع مجموعة متغيرات البيئة هذه، فلن يطبع أي شيء.

يدعم section أحرف البدل أيضا:

const util = require('node:util');
const debuglog = util.debuglog('foo-bar');

debuglog('hi there, it\'s foo-bar [%d]', 2333);

إذا تم تشغيله مع NODE_DEBUG=foo* في البيئة، فإنه سيتم إخراج شيء مثل:

FOO-BAR 3257: hi there, it's foo-bar [2333]

قد يتم تحديد أسماء section متعددة مفصولة بفواصل في متغير البيئة NODE_DEBUG: NODE_DEBUG=fs,net,tls.

يمكن استخدام الوسيطة الاختيارية callback لاستبدال دالة التسجيل بدالة مختلفة لا تحتوي على أي تهيئة أو التفاف غير ضروري.

const util = require('node:util');
let debuglog = util.debuglog('internals', (debug) => {
  // Replace with a logging function that optimizes out
  // testing if the section is enabled
  debuglog = debug;
});
debuglog(string, (fn: DebugLoggerFunction) => void)

يتم استخدام الأسلوب util.debuglog() لإنشاء دالة تكتب رسائل تتبع الأخطاء بشكل مشروط إلى stderr استنادا إلى وجود متغير البيئة NODE_DEBUG. إذا ظهر اسم section ضمن قيمة متغير البيئة هذا، فإن الدالة التي تم إرجاعها تعمل بشكل مشابه console.error(). إذا لم يكن الأمر كما هو، فإن الدالة التي تم إرجاعها هي no-op.

const util = require('node:util');
const debuglog = util.debuglog('foo');

debuglog('hello from foo [%d]', 123);

إذا تم تشغيل هذا البرنامج مع NODE_DEBUG=foo في البيئة، فسيخرج شيئا مثل:

FOO 3245: hello from foo [123]

حيث 3245 هو معرف العملية. إذا لم يتم تشغيله مع مجموعة متغيرات البيئة هذه، فلن يطبع أي شيء.

يدعم section أحرف البدل أيضا:

const util = require('node:util');
const debuglog = util.debuglog('foo-bar');

debuglog('hi there, it\'s foo-bar [%d]', 2333);

إذا تم تشغيله مع NODE_DEBUG=foo* في البيئة، فإنه سيتم إخراج شيء مثل:

FOO-BAR 3257: hi there, it's foo-bar [2333]

قد يتم تحديد أسماء section متعددة مفصولة بفواصل في متغير البيئة NODE_DEBUG: NODE_DEBUG=fs,net,tls.

يمكن استخدام الوسيطة الاختيارية callback لاستبدال دالة التسجيل بدالة مختلفة لا تحتوي على أي تهيئة أو التفاف غير ضروري.

const util = require('node:util');
let debuglog = util.debuglog('internals', (debug) => {
  // Replace with a logging function that optimizes out
  // testing if the section is enabled
  debuglog = debug;
});
deprecate<T>(T, string, string)

يلتف أسلوب util.deprecate()fn (التي قد تكون دالة أو فئة) بطريقة يتم وضع علامة عليها على أنها مهملة.

const util = require('node:util');

exports.obsoleteFunction = util.deprecate(() => {
  // Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

عند استدعاؤها، سيعيد util.deprecate() دالة ستبعث DeprecationWarning باستخدام الحدث 'warning'. سيتم إصدار التحذير وطباعته إلى stderr في المرة الأولى التي يتم فيها استدعاء الدالة التي تم إرجاعها. بعد إصدار التحذير، يتم استدعاء الدالة الملتفة دون إصدار تحذير.

إذا تم توفير نفس code الاختيارية في استدعاءات متعددة إلى util.deprecate()، إصدار التحذير مرة واحدة فقط لذلك code.

const util = require('node:util');

const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001');
const fn2 = util.deprecate(someOtherFunction, someOtherMessage, 'DEP0001');
fn1(); // Emits a deprecation warning with code DEP0001
fn2(); // Does not emit a deprecation warning because it has the same code

إذا تم استخدام علامات سطر الأوامر --no-deprecation أو --no-warnings، أو إذا تم تعيين الخاصية process.noDeprecation إلى trueقبل إلى تحذير الإهمال الأول، فإن أسلوب util.deprecate() لا يفعل شيئا.

إذا تم تعيين علامات سطر الأوامر --trace-deprecation أو --trace-warnings، أو تم تعيين الخاصية process.traceDeprecation إلى true، تتم طباعة تحذير وتتبع مكدس إلى stderr في المرة الأولى التي يتم فيها استدعاء الدالة المهملة.

إذا تم تعيين علامة سطر الأوامر --throw-deprecation، أو تم تعيين الخاصية process.throwDeprecation إلى true، طرح استثناء عند استدعاء الدالة المهملة.

علامة سطر الأوامر --throw-deprecation وخاصية process.throwDeprecation لها الأسبقية على --trace-deprecationprocess.traceDeprecation.

find<T>((x: T) => boolean, T[])

البحث عن القيمة الأولى في صفيف يطابق دالة التقييم المحددة.

findIndex<T>((x: T) => boolean, T[])

البحث عن فهرس القيمة الأولى في صفيف يطابق دالة التقييم المحددة.

format(any, any[])

يقوم الأسلوب util.format() بإرجاع سلسلة منسقة باستخدام الوسيطة الأولى كسلسلة تنسيق printf-مثل التي يمكن أن تحتوي على صفر أو أكثر من محددات التنسيق. يتم استبدال كل محدد بالقيمة المحولة من الوسيطة المقابلة. المحددات المدعومة هي:

إذا لم يكن للمحدد وسيطة مقابلة، فلن يتم استبداله:

util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

يتم تنسيق القيم التي ليست جزءا من سلسلة التنسيق باستخدام util.inspect() إذا لم يكن نوعها string.

إذا كان هناك المزيد من الوسيطات التي تم تمريرها إلى الأسلوب util.format() من عدد المحددات، يتم تسلسل الوسيطات الإضافية إلى السلسلة التي تم إرجاعها، مفصولة بمسافات:

util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz'

إذا كانت الوسيطة الأولى لا تحتوي على محدد تنسيق صحيح، util.format() بإرجاع سلسلة عبارة عن سلسلة لكافة الوسيطات مفصولة بمسافات:

util.format(1, 2, 3);
// Returns: '1 2 3'

إذا تم تمرير وسيطة واحدة فقط إلى util.format()، يتم إرجاعها كما هي دون أي تنسيق:

util.format('%% %s');
// Returns: '%% %s'

util.format() هو أسلوب متزامن مخصص كأداة لتصحيح الأخطاء. يمكن أن يكون لبعض قيم الإدخال حمل أداء كبير يمكن أن يمنع حلقة الحدث. استخدم هذه الدالة بعناية ولا تستخدم أبدا في مسار التعليمات البرمجية الساخنة.

formatWithOptions(InspectOptions, any, any[])

هذه الدالة مطابقة لتنسيق ، باستثناء أنها تأخذ وسيطة inspectOptions تحدد الخيارات التي يتم تمريرها إلى فحص.

util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
// Returns 'See object { foo: 42 }', where `42` is colored as a number
// when printed to a terminal.
generateUUID()

إنشاء uuid مكون من 20 حرفا.

getRandomValue()

إرجاع رقم عشوائي

getSystemErrorMap()

إرجاع مخطط لكافة رموز أخطاء النظام المتوفرة من واجهة برمجة تطبيقات Node.js. يعتمد التعيين بين رموز الخطأ وأسماء الأخطاء على النظام الأساسي. راجع Common System Errors لأسماء الأخطاء الشائعة.

fs.access('file/that/does/not/exist', (err) => {
  const errorMap = util.getSystemErrorMap();
  const name = errorMap.get(err.errno);
  console.error(name);  // ENOENT
});
getSystemErrorName(number)

إرجاع اسم السلسلة لرمز خطأ رقمي يأتي من واجهة برمجة تطبيقات Node.js. يعتمد التعيين بين رموز الخطأ وأسماء الأخطاء على النظام الأساسي. راجع Common System Errors لأسماء الأخطاء الشائعة.

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});
getTimeDiffInMilliseconds(Date, Date)

إرجاع الفاصل الزمني بين تاريخين بالمللي ثانية

inherits(unknown, unknown)

لا ينصح باستخدام util.inherits(). يرجى استخدام class ES6 والكلمات الأساسية extends للحصول على دعم توريث مستوى اللغة. لاحظ أيضا أن النمطين غير متوافقين دلاليا.

وراثة أساليب النموذج الأولي من منشئ إلى آخر. سيتم تعيين النموذج الأولي constructor إلى كائن جديد تم إنشاؤه من superConstructor.

يضيف هذا بشكل أساسي بعض التحقق من صحة الإدخال أعلىObject.setPrototypeOf(constructor.prototype, superConstructor.prototype). وكراحة إضافية، يمكن الوصول إلى superConstructor من خلال خاصية constructor.super_.

const util = require('node:util');
const EventEmitter = require('node:events');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"

مثال ES6 باستخدام classextends:

const EventEmitter = require('node:events');

class MyStream extends EventEmitter {
  write(data) {
    this.emit('data', data);
  }
}

const stream = new MyStream();

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('With ES6');
inspect(any, boolean, null | number, boolean)

يقوم الأسلوب util.inspect() بإرجاع تمثيل سلسلة object مخصص لتصحيح الأخطاء. قد يتغير ناتج util.inspect في أي وقت ولا ينبغي الاعتماد عليه برمجيا. قد يتم تمرير options إضافية تغير النتيجة. سيستخدم util.inspect() اسم الدالة الإنشائية و/أو @@toStringTag لإنشاء علامة قابلة للتعري لقيمة تم فحصها.

class Foo {
  get [Symbol.toStringTag]() {
    return 'bar';
  }
}

class Bar {}

const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });

util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz);       // '[foo] {}'

تشير المراجع الدائرية إلى ارتساءها باستخدام فهرس مرجعي:

const { inspect } = require('node:util');

const obj = {};
obj.a = [obj];
obj.b = {};
obj.b.inner = obj.b;
obj.b.obj = obj;

console.log(inspect(obj));
// <ref *1> {
//   a: [ [Circular *1] ],
//   b: <ref *2> { inner: [Circular *2], obj: [Circular *1] }
// }

يفحص المثال التالي كافة خصائص الكائن util:

const util = require('node:util');

console.log(util.inspect(util, { showHidden: true, depth: null }));

يوضح المثال التالي تأثير خيار compact:

const util = require('node:util');

const o = {
  a: [1, 2, [[
    'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' +
      'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.',
    'test',
    'foo']], 4],
  b: new Map([['za', 1], ['zb', 'test']]),
};
console.log(util.inspect(o, { compact: true, depth: 5, breakLength: 80 }));

// { a:
//   [ 1,
//     2,
//     [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line
//           'test',
//           'foo' ] ],
//     4 ],
//   b: Map(2) { 'za' => 1, 'zb' => 'test' } }

// Setting `compact` to false or an integer creates more reader friendly output.
console.log(util.inspect(o, { compact: false, depth: 5, breakLength: 80 }));

// {
//   a: [
//     1,
//     2,
//     [
//       [
//         'Lorem ipsum dolor sit amet,\n' +
//           'consectetur adipiscing elit, sed do eiusmod \n' +
//           'tempor incididunt ut labore et dolore magna aliqua.',
//         'test',
//         'foo'
//       ]
//     ],
//     4
//   ],
//   b: Map(2) {
//     'za' => 1,
//     'zb' => 'test'
//   }
// }

// Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a
// single line.

يسمح خيار showHidden بفحص إدخالات WeakMapWeakSet. إذا كان هناك إدخالات أكثر من maxArrayLength، فلا يوجد أي ضمان لعرض الإدخالات. وهذا يعني أن استرداد نفس إدخالات WeakSet مرتين قد يؤدي إلى إخراج مختلف. علاوة على ذلك، قد يتم جمع الإدخالات التي لا تتضمن مراجع قوية متبقية في أي وقت.

const { inspect } = require('node:util');

const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);

console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }

يضمن خيار sorted أن ترتيب إدراج خاصية العنصر لا يؤثر على نتيجة util.inspect().

const { inspect } = require('node:util');
const assert = require('node:assert');

const o1 = {
  b: [2, 3, 1],
  a: '`a` comes before `b`',
  c: new Set([2, 3, 1]),
};
console.log(inspect(o1, { sorted: true }));
// { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } }
console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) }));
// { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' }

const o2 = {
  c: new Set([2, 1, 3]),
  a: '`a` comes before `b`',
  b: [2, 3, 1],
};
assert.strict.equal(
  inspect(o1, { sorted: true }),
  inspect(o2, { sorted: true }),
);

يضيف الخيار numericSeparator تسطيرا سفليا كل ثلاثة أرقام إلى جميع الأرقام.

const { inspect } = require('node:util');

const thousand = 1_000;
const million = 1_000_000;
const bigNumber = 123_456_789n;
const bigDecimal = 1_234.123_45;

console.log(inspect(thousand, { numericSeparator: true }));
// 1_000
console.log(inspect(million, { numericSeparator: true }));
// 1_000_000
console.log(inspect(bigNumber, { numericSeparator: true }));
// 123_456_789n
console.log(inspect(bigDecimal, { numericSeparator: true }));
// 1_234.123_45

util.inspect() هو أسلوب متزامن مخصص لتصحيح الأخطاء. يبلغ الحد الأقصى لطول الإخراج حوالي 128 ميجابايت. سيتم اقتطاع المدخلات التي تؤدي إلى إخراج أطول.

inspect(any, InspectOptions)
isArray(unknown)

الاسم المستعار Array.isArray().

إرجاع true إذا كان object المحدد هو Array. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false
isBoolean(unknown)

إرجاع true إذا كان object المحدد هو Boolean. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isBoolean(1);
// Returns: false
util.isBoolean(0);
// Returns: false
util.isBoolean(false);
// Returns: true
isBuffer(unknown)

إرجاع true إذا كان object المحدد هو Buffer. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isBuffer({ length: 0 });
// Returns: false
util.isBuffer([]);
// Returns: false
util.isBuffer(Buffer.from('hello world'));
// Returns: true
isCreate(string)

التحقق من أن نوع التضمين مخصص للإنشاء

isDate(unknown)

إرجاع true إذا كان object المحدد هو Date. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isDate(new Date());
// Returns: true
util.isDate(Date());
// false (without 'new' returns a String)
util.isDate({});
// Returns: false
isDeepStrictEqual(unknown, unknown)

إرجاع true إذا كانت هناك مساواة صارمة عميقة بين val1val2. وإلا، يتم إرجاع false.

راجع assert.deepStrictEqual() لمزيد من المعلومات حول المساواة الصارمة العميقة.

isError(unknown)

إرجاع true إذا كان object المحدد هو Error. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isError(new Error());
// Returns: true
util.isError(new TypeError());
// Returns: true
util.isError({ name: 'Error', message: 'an error occurred' });
// Returns: false

يعتمد هذا الأسلوب على سلوك Object.prototype.toString(). من الممكن الحصول على نتيجة غير صحيحة عندما تعالج الوسيطة object@@toStringTag.

const util = require('node:util');
const obj = { name: 'Error', message: 'an error occurred' };

util.isError(obj);
// Returns: false
obj[Symbol.toStringTag] = 'Error';
util.isError(obj);
// Returns: true
isFunction(unknown)

إرجاع true إذا كان object المحدد هو Function. وإلا، يتم إرجاع false.

const util = require('node:util');

function Foo() {}
const Bar = () => {};

util.isFunction({});
// Returns: false
util.isFunction(Foo);
// Returns: true
util.isFunction(Bar);
// Returns: true
isNull(unknown)

إرجاع true إذا كان object المحدد nullبدقة . وإلا، فترجعfalse.

const util = require('node:util');

util.isNull(0);
// Returns: false
util.isNull(undefined);
// Returns: false
util.isNull(null);
// Returns: true
isNullOrUndefined(unknown)

إرجاع true إذا كان object المحدد null أو undefined. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isNullOrUndefined(0);
// Returns: false
util.isNullOrUndefined(undefined);
// Returns: true
util.isNullOrUndefined(null);
// Returns: true
isNumber(unknown)

إرجاع true إذا كان object المحدد هو Number. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isNumber(false);
// Returns: false
util.isNumber(Infinity);
// Returns: true
util.isNumber(0);
// Returns: true
util.isNumber(NaN);
// Returns: true
isObject(unknown)

إرجاع true إذا كان object المحدد هو Objectتماما ولاFunction (على الرغم من أن الدالات هي كائنات في JavaScript). وإلا، يتم إرجاع false.

const util = require('node:util');

util.isObject(5);
// Returns: false
util.isObject(null);
// Returns: false
util.isObject({});
// Returns: true
util.isObject(() => {});
// Returns: false
isPrimitive(unknown)

إرجاع true إذا كان object المحدد نوعا بدائيا. وإلا، فترجعfalse.

const util = require('node:util');

util.isPrimitive(5);
// Returns: true
util.isPrimitive('foo');
// Returns: true
util.isPrimitive(false);
// Returns: true
util.isPrimitive(null);
// Returns: true
util.isPrimitive(undefined);
// Returns: true
util.isPrimitive({});
// Returns: false
util.isPrimitive(() => {});
// Returns: false
util.isPrimitive(/^$/);
// Returns: false
util.isPrimitive(new Date());
// Returns: false
isRDLEmbed(string)

التحقق من أن عنوان url للتضمين هو لتقرير RDL.

isRegExp(unknown)

إرجاع true إذا كان object المحدد هو RegExp. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isRegExp(/some regexp/);
// Returns: true
util.isRegExp(new RegExp('another regexp'));
// Returns: true
util.isRegExp({});
// Returns: false
isSavedInternal(HttpPostMessage, string, Window)

التحقق من حفظ التقرير.

isString(unknown)

إرجاع true إذا كان object المحدد هو string. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isString('');
// Returns: true
util.isString('foo');
// Returns: true
util.isString(String('foo'));
// Returns: true
util.isString(5);
// Returns: false
isSymbol(unknown)

إرجاع true إذا كان object المحدد هو Symbol. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isSymbol(5);
// Returns: false
util.isSymbol('foo');
// Returns: false
util.isSymbol(Symbol('foo'));
// Returns: true
isUndefined(unknown)

إرجاع true إذا كان object المحدد undefined. وإلا، يتم إرجاع false.

const util = require('node:util');

const foo = undefined;
util.isUndefined(5);
// Returns: false
util.isUndefined(foo);
// Returns: true
util.isUndefined(null);
// Returns: false
log(string)

يقوم الأسلوب util.log() بطباعة string المعطاة stdout مع طابع زمني مضمن.

const util = require('node:util');

util.log('Timestamped message.');
parseArgs<T>(T)

يوفر واجهة برمجة تطبيقات أعلى مستوى لتحليل وسيطة سطر الأوامر من التفاعل مع process.argv مباشرة. يأخذ مواصفات للوسيطات المتوقعة ويعيد كائنا منظما بالخيارات والمواضع التي تم تحليلها.

import { parseArgs } from 'node:util';
const args = ['-f', '--bar', 'b'];
const options = {
  foo: {
    type: 'boolean',
    short: 'f',
  },
  bar: {
    type: 'string',
  },
};
const {
  values,
  positionals,
} = parseArgs({ args, options });
console.log(values, positionals);
// Prints: [Object: null prototype] { foo: true, bar: 'b' } []
parseEnv(string)

الثبات: 1.1 - التطوير النشط نظرا لمثال .env الملف:

const { parseEnv } = require('node:util');

parseEnv('HELLO=world\nHELLO=oh my\n');
// Returns: { HELLO: 'oh my' }
promisify((callback: (err?: any) => void) => void)
promisify(Function)
promisify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void)
promisify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void)
promisify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void)
promisify<T1, T2, TResult>((arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2>((arg1: T1, arg2: T2, callback: (err?: any) => void) => void)
promisify<T1, TResult>((arg1: T1, callback: (err: any, result: TResult) => void) => void)
promisify<T1>((arg1: T1, callback: (err?: any) => void) => void)
promisify<TCustom>(CustomPromisify<TCustom>)

يأخذ دالة تتبع نمط رد الاتصال الشائع للخطأ الأول، أي أخذ رد اتصال (err, value) => ... كوسيطة أخيرة، وإرجاع إصدار يرجع الوعود.

const util = require('node:util');
const fs = require('node:fs');

const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
  // Do something with `stats`
}).catch((error) => {
  // Handle the error.
});

أو، ما يعادل استخدام async functions:

const util = require('node:util');
const fs = require('node:fs');

const stat = util.promisify(fs.stat);

async function callStat() {
  const stats = await stat('.');
  console.log(`This directory is owned by ${stats.uid}`);
}

callStat();

إذا كانت هناك خاصية original[util.promisify.custom] موجودة، فسيرجع promisify قيمته، راجع Custom promisified functions.

يفترض promisify() أن original هي دالة تأخذ رد اتصال كوسيطة نهائية لها في جميع الحالات. إذا لم تكن original دالة، فسيطرح promisify() خطأ. إذا كانت original دالة ولكن وسيطتها الأخيرة ليست رد اتصال بالخطأ أولا، فسيستمر تمرير رد اتصال الخطأ الأول كوسيطة أخيرة له.

قد لا يعمل استخدام promisify() على أساليب الفئة أو الأساليب الأخرى التي تستخدم this كما هو متوقع ما لم تتم معالجتها بشكل خاص:

const util = require('node:util');

class Foo {
  constructor() {
    this.a = 42;
  }

  bar(callback) {
    callback(null, this.a);
  }
}

const foo = new Foo();

const naiveBar = util.promisify(foo.bar);
// TypeError: Cannot read property 'a' of undefined
// naiveBar().then(a => console.log(a));

naiveBar.call(foo).then((a) => console.log(a)); // '42'

const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'
promisify<TResult>((callback: (err: any, result: TResult) => void) => void)
raiseCustomEvent(HTMLElement, string, any)

رفع حدث مخصص مع بيانات الحدث على عنصر HTML المحدد.

remove<T>((x: T) => boolean, T[])
stripVTControlCharacters(string)

إرجاع str مع إزالة أي رموز إلغاء ANSI.

console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m'));
// Prints "value"
styleText(ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[], string)

الاستقرار: 1.1 - التطوير النشط

ترجع هذه الدالة نصا منسقا بالنظر إلى format تمريره.

const { styleText } = require('node:util');
const errorMessage = styleText('red', 'Error! Error!');
console.log(errorMessage);

يوفر util.inspect.colors أيضا تنسيقات نصية مثل italicunderline ويمكنك الجمع بين كليهما:

console.log(
  util.styleText(['underline', 'italic'], 'My italic underlined message'),
);

عند تمرير صفيف من التنسيقات، يكون ترتيب التنسيق المطبق من اليسار إلى اليمين بحيث قد يقوم النمط التالي بالكتابة فوق النمط السابق.

console.log(
  util.styleText(['red', 'green'], 'text'), // green
);

يمكن العثور على القائمة الكاملة للتنسيقات في المعدلات.

toUSVString(string)

إرجاع string بعد استبدال أي نقاط تعليمات برمجية بديلة (أو ما يعادلها، أي وحدات تعليمة برمجية بديلة غير مفصولة) ب "حرف استبدال" Unicode U+FFFD.

transferableAbortController()

إنشاء وإرجاع مثيل AbortController تم وضع علامة على AbortSignal الخاص به على أنه قابل للنقل ويمكن استخدامه مع structuredClone() أو postMessage().

transferableAbortSignal(AbortSignal)

وضع علامة على AbortSignal المحددة على أنها قابلة للنقل بحيث يمكن استخدامها معstructuredClone()postMessage().

const signal = transferableAbortSignal(AbortSignal.timeout(100));
const channel = new MessageChannel();
channel.port2.postMessage(signal, [signal]);

تفاصيل الوظيفة

aborted(AbortSignal, any)

يستمع إلى حدث إحباط على signal المقدمة ويرجع وعدا يتم الوفاء به عند إجهاض signal. إذا كان resource الذي تم تمريره عبارة عن قمامة تم جمعها قبل إجهاض signal، يبقى الوعد الذي تم إرجاعه معلقا إلى أجل غير مسمى.

import { aborted } from 'node:util';

const dependent = obtainSomethingAbortable();

aborted(dependent.signal, dependent).then(() => {
  // Do something when dependent is aborted.
});

dependent.on('event', () => {
  dependent.abort();
});
function aborted(signal: AbortSignal, resource: any): Promise<void>

المعلمات

signal

AbortSignal

resource

any

أي كيان غير فارغ، الإشارة إليه يتم الاحتفاظ به ضعيفا.

المرتجعات

Promise<void>

addParamToUrl(string, string, string)

إضافة معلمة إلى عنوان url المحدد

function addParamToUrl(url: string, paramName: string, value: string): string

المعلمات

url

string

paramName

string

value

string

المرتجعات

string

assign(any[])

نسخ قيم كافة الخصائص القابلة للتعداد من كائن مصدر واحد أو أكثر إلى كائن هدف، وإرجاع الكائن الهدف.

function assign(args: any[]): any

المعلمات

args

any[]

المرتجعات

any

autoAuthInEmbedUrl(string)

التحقق من احتواء عنوان url المضمن على autoAuth=true.

function autoAuthInEmbedUrl(embedUrl: string): boolean

المعلمات

embedUrl

string

المرتجعات

boolean

callbackify(() => Promise<void>)

تأخذ دالة async (أو دالة ترجع Promise) وترجع دالة باتباع نمط رد الاتصال الأول للخطأ، أي أخذ رد اتصال (err, value) => ... كوسيطة أخيرة. في رد الاتصال، ستكون الوسيطة الأولى هي سبب الرفض (أو null إذا تم حل Promise)، وستكون الوسيطة الثانية هي القيمة التي تم حلها.

const util = require('node:util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

ستتم الطباعة:

hello world

يتم تنفيذ رد الاتصال بشكل غير متزامن، وسيكون له تتبع مكدس محدود. إذا تم طرح رد الاتصال، ستبعث العملية حدث 'uncaughtException'، وإذا لم تتم معالجتها سيتم إنهاء.

نظرا لأن null له معنى خاص باعتباره الوسيطة الأولى لرد الاتصال، إذا رفضت دالة ملفوفة Promise بقيمة مزيفة لسبب ما، يتم التفاف القيمة في Error بالقيمة الأصلية المخزنة في حقل يسمى reason.

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // When the Promise was rejected with `null` it is wrapped with an Error and
  // the original value is stored in `reason`.
  err &#x26;&#x26; Object.hasOwn(err, 'reason') &#x26;&#x26; err.reason === null;  // true
});
function callbackify(fn: () => Promise<void>): (callback: (err: NodeJS.ErrnoException) => void) => void

المعلمات

fn

() => Promise<void>

دالة async

المرتجعات

(callback: (err: NodeJS.ErrnoException) => void) => void

دالة نمط رد الاتصال

callbackify<T1, T2, T3, T4, T5, T6, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, T5, T6, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4, T5, T6>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>)

function callbackify<T1, T2, T3, T4, T5, T6>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>)

function callbackify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>)

function callbackify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>)

function callbackify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3) => Promise<void>)

function callbackify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3) => Promise<void>

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, T2, TResult>((arg1: T1, arg2: T2) => Promise<TResult>)

function callbackify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2) => Promise<TResult>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2) => Promise<TResult>

المرتجعات

(arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2>((arg1: T1, arg2: T2) => Promise<void>)

function callbackify<T1, T2>(fn: (arg1: T1, arg2: T2) => Promise<void>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void

المعلمات

fn

(arg1: T1, arg2: T2) => Promise<void>

المرتجعات

(arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<T1, TResult>((arg1: T1) => Promise<TResult>)

function callbackify<T1, TResult>(fn: (arg1: T1) => Promise<TResult>): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

المعلمات

fn

(arg1: T1) => Promise<TResult>

المرتجعات

(arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

callbackify<T1>((arg1: T1) => Promise<void>)

function callbackify<T1>(fn: (arg1: T1) => Promise<void>): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void

المعلمات

fn

(arg1: T1) => Promise<void>

المرتجعات

(arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void

callbackify<TResult>(() => Promise<TResult>)

function callbackify<TResult>(fn: () => Promise<TResult>): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

المعلمات

fn

() => Promise<TResult>

المرتجعات

(callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void

createRandomString()

إنشاء سلسلة أحرف عشوائية من 5 إلى 6 أحرف.

function createRandomString(): string

المرتجعات

string

debug(string, (fn: DebugLoggerFunction) => void)

يتم استخدام الأسلوب util.debuglog() لإنشاء دالة تكتب رسائل تتبع الأخطاء بشكل مشروط إلى stderr استنادا إلى وجود متغير البيئة NODE_DEBUG. إذا ظهر اسم section ضمن قيمة متغير البيئة هذا، فإن الدالة التي تم إرجاعها تعمل بشكل مشابه console.error(). إذا لم يكن الأمر كما هو، فإن الدالة التي تم إرجاعها هي no-op.

const util = require('node:util');
const debuglog = util.debuglog('foo');

debuglog('hello from foo [%d]', 123);

إذا تم تشغيل هذا البرنامج مع NODE_DEBUG=foo في البيئة، فسيخرج شيئا مثل:

FOO 3245: hello from foo [123]

حيث 3245 هو معرف العملية. إذا لم يتم تشغيله مع مجموعة متغيرات البيئة هذه، فلن يطبع أي شيء.

يدعم section أحرف البدل أيضا:

const util = require('node:util');
const debuglog = util.debuglog('foo-bar');

debuglog('hi there, it\'s foo-bar [%d]', 2333);

إذا تم تشغيله مع NODE_DEBUG=foo* في البيئة، فإنه سيتم إخراج شيء مثل:

FOO-BAR 3257: hi there, it's foo-bar [2333]

قد يتم تحديد أسماء section متعددة مفصولة بفواصل في متغير البيئة NODE_DEBUG: NODE_DEBUG=fs,net,tls.

يمكن استخدام الوسيطة الاختيارية callback لاستبدال دالة التسجيل بدالة مختلفة لا تحتوي على أي تهيئة أو التفاف غير ضروري.

const util = require('node:util');
let debuglog = util.debuglog('internals', (debug) => {
  // Replace with a logging function that optimizes out
  // testing if the section is enabled
  debuglog = debug;
});
function debug(section: string, callback?: (fn: DebugLoggerFunction) => void): DebugLogger

المعلمات

section

string

سلسلة تحدد جزء التطبيق الذي يتم إنشاء الدالة debuglog له.

callback

(fn: DebugLoggerFunction) => void

تم استدعاء رد الاتصال في المرة الأولى التي يتم فيها استدعاء دالة التسجيل باستخدام وسيطة دالة تعد دالة تسجيل أكثر تحسينا.

المرتجعات

دالة التسجيل

debuglog(string, (fn: DebugLoggerFunction) => void)

يتم استخدام الأسلوب util.debuglog() لإنشاء دالة تكتب رسائل تتبع الأخطاء بشكل مشروط إلى stderr استنادا إلى وجود متغير البيئة NODE_DEBUG. إذا ظهر اسم section ضمن قيمة متغير البيئة هذا، فإن الدالة التي تم إرجاعها تعمل بشكل مشابه console.error(). إذا لم يكن الأمر كما هو، فإن الدالة التي تم إرجاعها هي no-op.

const util = require('node:util');
const debuglog = util.debuglog('foo');

debuglog('hello from foo [%d]', 123);

إذا تم تشغيل هذا البرنامج مع NODE_DEBUG=foo في البيئة، فسيخرج شيئا مثل:

FOO 3245: hello from foo [123]

حيث 3245 هو معرف العملية. إذا لم يتم تشغيله مع مجموعة متغيرات البيئة هذه، فلن يطبع أي شيء.

يدعم section أحرف البدل أيضا:

const util = require('node:util');
const debuglog = util.debuglog('foo-bar');

debuglog('hi there, it\'s foo-bar [%d]', 2333);

إذا تم تشغيله مع NODE_DEBUG=foo* في البيئة، فإنه سيتم إخراج شيء مثل:

FOO-BAR 3257: hi there, it's foo-bar [2333]

قد يتم تحديد أسماء section متعددة مفصولة بفواصل في متغير البيئة NODE_DEBUG: NODE_DEBUG=fs,net,tls.

يمكن استخدام الوسيطة الاختيارية callback لاستبدال دالة التسجيل بدالة مختلفة لا تحتوي على أي تهيئة أو التفاف غير ضروري.

const util = require('node:util');
let debuglog = util.debuglog('internals', (debug) => {
  // Replace with a logging function that optimizes out
  // testing if the section is enabled
  debuglog = debug;
});
function debuglog(section: string, callback?: (fn: DebugLoggerFunction) => void): DebugLogger

المعلمات

section

string

سلسلة تحدد جزء التطبيق الذي يتم إنشاء الدالة debuglog له.

callback

(fn: DebugLoggerFunction) => void

تم استدعاء رد الاتصال في المرة الأولى التي يتم فيها استدعاء دالة التسجيل باستخدام وسيطة دالة تعد دالة تسجيل أكثر تحسينا.

المرتجعات

دالة التسجيل

deprecate<T>(T, string, string)

يلتف أسلوب util.deprecate()fn (التي قد تكون دالة أو فئة) بطريقة يتم وضع علامة عليها على أنها مهملة.

const util = require('node:util');

exports.obsoleteFunction = util.deprecate(() => {
  // Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

عند استدعاؤها، سيعيد util.deprecate() دالة ستبعث DeprecationWarning باستخدام الحدث 'warning'. سيتم إصدار التحذير وطباعته إلى stderr في المرة الأولى التي يتم فيها استدعاء الدالة التي تم إرجاعها. بعد إصدار التحذير، يتم استدعاء الدالة الملتفة دون إصدار تحذير.

إذا تم توفير نفس code الاختيارية في استدعاءات متعددة إلى util.deprecate()، إصدار التحذير مرة واحدة فقط لذلك code.

const util = require('node:util');

const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001');
const fn2 = util.deprecate(someOtherFunction, someOtherMessage, 'DEP0001');
fn1(); // Emits a deprecation warning with code DEP0001
fn2(); // Does not emit a deprecation warning because it has the same code

إذا تم استخدام علامات سطر الأوامر --no-deprecation أو --no-warnings، أو إذا تم تعيين الخاصية process.noDeprecation إلى trueقبل إلى تحذير الإهمال الأول، فإن أسلوب util.deprecate() لا يفعل شيئا.

إذا تم تعيين علامات سطر الأوامر --trace-deprecation أو --trace-warnings، أو تم تعيين الخاصية process.traceDeprecation إلى true، تتم طباعة تحذير وتتبع مكدس إلى stderr في المرة الأولى التي يتم فيها استدعاء الدالة المهملة.

إذا تم تعيين علامة سطر الأوامر --throw-deprecation، أو تم تعيين الخاصية process.throwDeprecation إلى true، طرح استثناء عند استدعاء الدالة المهملة.

علامة سطر الأوامر --throw-deprecation وخاصية process.throwDeprecation لها الأسبقية على --trace-deprecationprocess.traceDeprecation.

function deprecate<T>(fn: T, msg: string, code?: string): T

المعلمات

fn

T

الدالة التي يتم إهمالها.

msg

string

رسالة تحذير لعرضها عند استدعاء الدالة المهملة.

code

string

رمز إهمال. راجع list of deprecated APIs للحصول على قائمة بالرموز.

المرتجعات

T

الدالة المهملة الملتفة لإرسال تحذير.

find<T>((x: T) => boolean, T[])

البحث عن القيمة الأولى في صفيف يطابق دالة التقييم المحددة.

function find<T>(predicate: (x: T) => boolean, xs: T[]): T

المعلمات

predicate

(x: T) => boolean

xs

T[]

المرتجعات

T

findIndex<T>((x: T) => boolean, T[])

البحث عن فهرس القيمة الأولى في صفيف يطابق دالة التقييم المحددة.

function findIndex<T>(predicate: (x: T) => boolean, xs: T[]): number

المعلمات

predicate

(x: T) => boolean

xs

T[]

المرتجعات

number

format(any, any[])

يقوم الأسلوب util.format() بإرجاع سلسلة منسقة باستخدام الوسيطة الأولى كسلسلة تنسيق printf-مثل التي يمكن أن تحتوي على صفر أو أكثر من محددات التنسيق. يتم استبدال كل محدد بالقيمة المحولة من الوسيطة المقابلة. المحددات المدعومة هي:

إذا لم يكن للمحدد وسيطة مقابلة، فلن يتم استبداله:

util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

يتم تنسيق القيم التي ليست جزءا من سلسلة التنسيق باستخدام util.inspect() إذا لم يكن نوعها string.

إذا كان هناك المزيد من الوسيطات التي تم تمريرها إلى الأسلوب util.format() من عدد المحددات، يتم تسلسل الوسيطات الإضافية إلى السلسلة التي تم إرجاعها، مفصولة بمسافات:

util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz'

إذا كانت الوسيطة الأولى لا تحتوي على محدد تنسيق صحيح، util.format() بإرجاع سلسلة عبارة عن سلسلة لكافة الوسيطات مفصولة بمسافات:

util.format(1, 2, 3);
// Returns: '1 2 3'

إذا تم تمرير وسيطة واحدة فقط إلى util.format()، يتم إرجاعها كما هي دون أي تنسيق:

util.format('%% %s');
// Returns: '%% %s'

util.format() هو أسلوب متزامن مخصص كأداة لتصحيح الأخطاء. يمكن أن يكون لبعض قيم الإدخال حمل أداء كبير يمكن أن يمنع حلقة الحدث. استخدم هذه الدالة بعناية ولا تستخدم أبدا في مسار التعليمات البرمجية الساخنة.

function format(format?: any, param: any[]): string

المعلمات

format

any

printf-like format string.

param

any[]

المرتجعات

string

formatWithOptions(InspectOptions, any, any[])

هذه الدالة مطابقة لتنسيق ، باستثناء أنها تأخذ وسيطة inspectOptions تحدد الخيارات التي يتم تمريرها إلى فحص.

util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
// Returns 'See object { foo: 42 }', where `42` is colored as a number
// when printed to a terminal.
function formatWithOptions(inspectOptions: InspectOptions, format?: any, param: any[]): string

المعلمات

inspectOptions
InspectOptions
format

any

param

any[]

المرتجعات

string

generateUUID()

إنشاء uuid مكون من 20 حرفا.

function generateUUID(): string

المرتجعات

string

getRandomValue()

إرجاع رقم عشوائي

function getRandomValue(): number

المرتجعات

number

getSystemErrorMap()

إرجاع مخطط لكافة رموز أخطاء النظام المتوفرة من واجهة برمجة تطبيقات Node.js. يعتمد التعيين بين رموز الخطأ وأسماء الأخطاء على النظام الأساسي. راجع Common System Errors لأسماء الأخطاء الشائعة.

fs.access('file/that/does/not/exist', (err) => {
  const errorMap = util.getSystemErrorMap();
  const name = errorMap.get(err.errno);
  console.error(name);  // ENOENT
});
function getSystemErrorMap(): Map<number, [string, string]>

المرتجعات

Map<number, [string, string]>

getSystemErrorName(number)

إرجاع اسم السلسلة لرمز خطأ رقمي يأتي من واجهة برمجة تطبيقات Node.js. يعتمد التعيين بين رموز الخطأ وأسماء الأخطاء على النظام الأساسي. راجع Common System Errors لأسماء الأخطاء الشائعة.

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});
function getSystemErrorName(err: number): string

المعلمات

err

number

المرتجعات

string

getTimeDiffInMilliseconds(Date, Date)

إرجاع الفاصل الزمني بين تاريخين بالمللي ثانية

function getTimeDiffInMilliseconds(start: Date, end: Date): number

المعلمات

start

Date

end

Date

المرتجعات

number

inherits(unknown, unknown)

لا ينصح باستخدام util.inherits(). يرجى استخدام class ES6 والكلمات الأساسية extends للحصول على دعم توريث مستوى اللغة. لاحظ أيضا أن النمطين غير متوافقين دلاليا.

وراثة أساليب النموذج الأولي من منشئ إلى آخر. سيتم تعيين النموذج الأولي constructor إلى كائن جديد تم إنشاؤه من superConstructor.

يضيف هذا بشكل أساسي بعض التحقق من صحة الإدخال أعلىObject.setPrototypeOf(constructor.prototype, superConstructor.prototype). وكراحة إضافية، يمكن الوصول إلى superConstructor من خلال خاصية constructor.super_.

const util = require('node:util');
const EventEmitter = require('node:events');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"

مثال ES6 باستخدام classextends:

const EventEmitter = require('node:events');

class MyStream extends EventEmitter {
  write(data) {
    this.emit('data', data);
  }
}

const stream = new MyStream();

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('With ES6');
function inherits(constructor: unknown, superConstructor: unknown)

المعلمات

constructor

unknown

superConstructor

unknown

inspect(any, boolean, null | number, boolean)

يقوم الأسلوب util.inspect() بإرجاع تمثيل سلسلة object مخصص لتصحيح الأخطاء. قد يتغير ناتج util.inspect في أي وقت ولا ينبغي الاعتماد عليه برمجيا. قد يتم تمرير options إضافية تغير النتيجة. سيستخدم util.inspect() اسم الدالة الإنشائية و/أو @@toStringTag لإنشاء علامة قابلة للتعري لقيمة تم فحصها.

class Foo {
  get [Symbol.toStringTag]() {
    return 'bar';
  }
}

class Bar {}

const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });

util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz);       // '[foo] {}'

تشير المراجع الدائرية إلى ارتساءها باستخدام فهرس مرجعي:

const { inspect } = require('node:util');

const obj = {};
obj.a = [obj];
obj.b = {};
obj.b.inner = obj.b;
obj.b.obj = obj;

console.log(inspect(obj));
// <ref *1> {
//   a: [ [Circular *1] ],
//   b: <ref *2> { inner: [Circular *2], obj: [Circular *1] }
// }

يفحص المثال التالي كافة خصائص الكائن util:

const util = require('node:util');

console.log(util.inspect(util, { showHidden: true, depth: null }));

يوضح المثال التالي تأثير خيار compact:

const util = require('node:util');

const o = {
  a: [1, 2, [[
    'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' +
      'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.',
    'test',
    'foo']], 4],
  b: new Map([['za', 1], ['zb', 'test']]),
};
console.log(util.inspect(o, { compact: true, depth: 5, breakLength: 80 }));

// { a:
//   [ 1,
//     2,
//     [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line
//           'test',
//           'foo' ] ],
//     4 ],
//   b: Map(2) { 'za' => 1, 'zb' => 'test' } }

// Setting `compact` to false or an integer creates more reader friendly output.
console.log(util.inspect(o, { compact: false, depth: 5, breakLength: 80 }));

// {
//   a: [
//     1,
//     2,
//     [
//       [
//         'Lorem ipsum dolor sit amet,\n' +
//           'consectetur adipiscing elit, sed do eiusmod \n' +
//           'tempor incididunt ut labore et dolore magna aliqua.',
//         'test',
//         'foo'
//       ]
//     ],
//     4
//   ],
//   b: Map(2) {
//     'za' => 1,
//     'zb' => 'test'
//   }
// }

// Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a
// single line.

يسمح خيار showHidden بفحص إدخالات WeakMapWeakSet. إذا كان هناك إدخالات أكثر من maxArrayLength، فلا يوجد أي ضمان لعرض الإدخالات. وهذا يعني أن استرداد نفس إدخالات WeakSet مرتين قد يؤدي إلى إخراج مختلف. علاوة على ذلك، قد يتم جمع الإدخالات التي لا تتضمن مراجع قوية متبقية في أي وقت.

const { inspect } = require('node:util');

const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);

console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }

يضمن خيار sorted أن ترتيب إدراج خاصية العنصر لا يؤثر على نتيجة util.inspect().

const { inspect } = require('node:util');
const assert = require('node:assert');

const o1 = {
  b: [2, 3, 1],
  a: '`a` comes before `b`',
  c: new Set([2, 3, 1]),
};
console.log(inspect(o1, { sorted: true }));
// { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } }
console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) }));
// { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' }

const o2 = {
  c: new Set([2, 1, 3]),
  a: '`a` comes before `b`',
  b: [2, 3, 1],
};
assert.strict.equal(
  inspect(o1, { sorted: true }),
  inspect(o2, { sorted: true }),
);

يضيف الخيار numericSeparator تسطيرا سفليا كل ثلاثة أرقام إلى جميع الأرقام.

const { inspect } = require('node:util');

const thousand = 1_000;
const million = 1_000_000;
const bigNumber = 123_456_789n;
const bigDecimal = 1_234.123_45;

console.log(inspect(thousand, { numericSeparator: true }));
// 1_000
console.log(inspect(million, { numericSeparator: true }));
// 1_000_000
console.log(inspect(bigNumber, { numericSeparator: true }));
// 123_456_789n
console.log(inspect(bigDecimal, { numericSeparator: true }));
// 1_234.123_45

util.inspect() هو أسلوب متزامن مخصص لتصحيح الأخطاء. يبلغ الحد الأقصى لطول الإخراج حوالي 128 ميجابايت. سيتم اقتطاع المدخلات التي تؤدي إلى إخراج أطول.

function inspect(object: any, showHidden?: boolean, depth?: null | number, color?: boolean): string

المعلمات

object

any

أي JavaScript بدائية أو Object.

showHidden

boolean

depth

null | number

color

boolean

المرتجعات

string

تمثيل object.

inspect(any, InspectOptions)

function inspect(object: any, options?: InspectOptions): string

المعلمات

object

any

options
InspectOptions

المرتجعات

string

isArray(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use isArray instead.

الاسم المستعار Array.isArray().

إرجاع true إذا كان object المحدد هو Array. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false
function isArray(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isBoolean(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use typeof value === 'boolean' instead.

إرجاع true إذا كان object المحدد هو Boolean. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isBoolean(1);
// Returns: false
util.isBoolean(0);
// Returns: false
util.isBoolean(false);
// Returns: true
function isBoolean(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isBuffer(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use isBuffer instead.

إرجاع true إذا كان object المحدد هو Buffer. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isBuffer({ length: 0 });
// Returns: false
util.isBuffer([]);
// Returns: false
util.isBuffer(Buffer.from('hello world'));
// Returns: true
function isBuffer(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isCreate(string)

التحقق من أن نوع التضمين مخصص للإنشاء

function isCreate(embedType: string): boolean

المعلمات

embedType

string

المرتجعات

boolean

isDate(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use isDate instead.

إرجاع true إذا كان object المحدد هو Date. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isDate(new Date());
// Returns: true
util.isDate(Date());
// false (without 'new' returns a String)
util.isDate({});
// Returns: false
function isDate(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isDeepStrictEqual(unknown, unknown)

إرجاع true إذا كانت هناك مساواة صارمة عميقة بين val1val2. وإلا، يتم إرجاع false.

راجع assert.deepStrictEqual() لمزيد من المعلومات حول المساواة الصارمة العميقة.

function isDeepStrictEqual(val1: unknown, val2: unknown): boolean

المعلمات

val1

unknown

val2

unknown

المرتجعات

boolean

isError(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use isNativeError instead.

إرجاع true إذا كان object المحدد هو Error. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isError(new Error());
// Returns: true
util.isError(new TypeError());
// Returns: true
util.isError({ name: 'Error', message: 'an error occurred' });
// Returns: false

يعتمد هذا الأسلوب على سلوك Object.prototype.toString(). من الممكن الحصول على نتيجة غير صحيحة عندما تعالج الوسيطة object@@toStringTag.

const util = require('node:util');
const obj = { name: 'Error', message: 'an error occurred' };

util.isError(obj);
// Returns: false
obj[Symbol.toStringTag] = 'Error';
util.isError(obj);
// Returns: true
function isError(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isFunction(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use typeof value === 'function' instead.

إرجاع true إذا كان object المحدد هو Function. وإلا، يتم إرجاع false.

const util = require('node:util');

function Foo() {}
const Bar = () => {};

util.isFunction({});
// Returns: false
util.isFunction(Foo);
// Returns: true
util.isFunction(Bar);
// Returns: true
function isFunction(object: unknown): boolean

المعلمات

object

unknown

المرتجعات

boolean

isNull(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use value === null instead.

إرجاع true إذا كان object المحدد nullبدقة . وإلا، فترجعfalse.

const util = require('node:util');

util.isNull(0);
// Returns: false
util.isNull(undefined);
// Returns: false
util.isNull(null);
// Returns: true
function isNull(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isNullOrUndefined(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use value === undefined || value === null instead.

إرجاع true إذا كان object المحدد null أو undefined. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isNullOrUndefined(0);
// Returns: false
util.isNullOrUndefined(undefined);
// Returns: true
util.isNullOrUndefined(null);
// Returns: true
function isNullOrUndefined(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isNumber(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use typeof value === 'number' instead.

إرجاع true إذا كان object المحدد هو Number. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isNumber(false);
// Returns: false
util.isNumber(Infinity);
// Returns: true
util.isNumber(0);
// Returns: true
util.isNumber(NaN);
// Returns: true
function isNumber(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isObject(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use value !== null && typeof value === 'object' instead.

إرجاع true إذا كان object المحدد هو Objectتماما ولاFunction (على الرغم من أن الدالات هي كائنات في JavaScript). وإلا، يتم إرجاع false.

const util = require('node:util');

util.isObject(5);
// Returns: false
util.isObject(null);
// Returns: false
util.isObject({});
// Returns: true
util.isObject(() => {});
// Returns: false
function isObject(object: unknown): boolean

المعلمات

object

unknown

المرتجعات

boolean

isPrimitive(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use (typeof value !== 'object' && typeof value !== 'function') || value === null instead.

إرجاع true إذا كان object المحدد نوعا بدائيا. وإلا، فترجعfalse.

const util = require('node:util');

util.isPrimitive(5);
// Returns: true
util.isPrimitive('foo');
// Returns: true
util.isPrimitive(false);
// Returns: true
util.isPrimitive(null);
// Returns: true
util.isPrimitive(undefined);
// Returns: true
util.isPrimitive({});
// Returns: false
util.isPrimitive(() => {});
// Returns: false
util.isPrimitive(/^$/);
// Returns: false
util.isPrimitive(new Date());
// Returns: false
function isPrimitive(object: unknown): boolean

المعلمات

object

unknown

المرتجعات

boolean

isRDLEmbed(string)

التحقق من أن عنوان url للتضمين هو لتقرير RDL.

function isRDLEmbed(embedUrl: string): boolean

المعلمات

embedUrl

string

المرتجعات

boolean

isRegExp(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Deprecated

إرجاع true إذا كان object المحدد هو RegExp. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isRegExp(/some regexp/);
// Returns: true
util.isRegExp(new RegExp('another regexp'));
// Returns: true
util.isRegExp({});
// Returns: false
function isRegExp(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isSavedInternal(HttpPostMessage, string, Window)

التحقق من حفظ التقرير.

function isSavedInternal(hpm: HttpPostMessage, uid: string, contentWindow: Window): Promise<boolean>

المعلمات

hpm

HttpPostMessage

uid

string

contentWindow

Window

المرتجعات

Promise<boolean>

isString(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use typeof value === 'string' instead.

إرجاع true إذا كان object المحدد هو string. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isString('');
// Returns: true
util.isString('foo');
// Returns: true
util.isString(String('foo'));
// Returns: true
util.isString(5);
// Returns: false
function isString(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isSymbol(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use typeof value === 'symbol' instead.

إرجاع true إذا كان object المحدد هو Symbol. وإلا، يتم إرجاع false.

const util = require('node:util');

util.isSymbol(5);
// Returns: false
util.isSymbol('foo');
// Returns: false
util.isSymbol(Symbol('foo'));
// Returns: true
function isSymbol(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

isUndefined(unknown)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v4.0.0 - Use value === undefined instead.

إرجاع true إذا كان object المحدد undefined. وإلا، يتم إرجاع false.

const util = require('node:util');

const foo = undefined;
util.isUndefined(5);
// Returns: false
util.isUndefined(foo);
// Returns: true
util.isUndefined(null);
// Returns: false
function isUndefined(object: unknown): object

المعلمات

object

unknown

المرتجعات

object

log(string)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

Since v6.0.0 - Use a third party module instead.

يقوم الأسلوب util.log() بطباعة string المعطاة stdout مع طابع زمني مضمن.

const util = require('node:util');

util.log('Timestamped message.');
function log(string: string)

المعلمات

string

string

parseArgs<T>(T)

يوفر واجهة برمجة تطبيقات أعلى مستوى لتحليل وسيطة سطر الأوامر من التفاعل مع process.argv مباشرة. يأخذ مواصفات للوسيطات المتوقعة ويعيد كائنا منظما بالخيارات والمواضع التي تم تحليلها.

import { parseArgs } from 'node:util';
const args = ['-f', '--bar', 'b'];
const options = {
  foo: {
    type: 'boolean',
    short: 'f',
  },
  bar: {
    type: 'string',
  },
};
const {
  values,
  positionals,
} = parseArgs({ args, options });
console.log(values, positionals);
// Prints: [Object: null prototype] { foo: true, bar: 'b' } []
function parseArgs<T>(config?: T): ParsedResults<T>

المعلمات

config

T

يستخدم لتوفير وسيطات لتحليل وتكوين المحلل. يدعم config الخصائص التالية:

المرتجعات

ParsedResults<T>

وسيطات سطر الأوامر التي تم تحليلها:

parseEnv(string)

الثبات: 1.1 - التطوير النشط نظرا لمثال .env الملف:

const { parseEnv } = require('node:util');

parseEnv('HELLO=world\nHELLO=oh my\n');
// Returns: { HELLO: 'oh my' }
function parseEnv(content: string): object

المعلمات

content

string

المحتويات الأولية لملف .env.

المرتجعات

object

promisify((callback: (err?: any) => void) => void)

function promisify(fn: (callback: (err?: any) => void) => void): () => Promise<void>

المعلمات

fn

(callback: (err?: any) => void) => void

المرتجعات

() => Promise<void>

promisify(Function)

function promisify(fn: Function): Function

المعلمات

fn

Function

المرتجعات

Function

promisify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

promisify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

promisify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

promisify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void

المرتجعات

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

promisify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void

المرتجعات

(arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

promisify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<void>

المعلمات

fn

(arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void

المرتجعات

(arg1: T1, arg2: T2, arg3: T3) => Promise<void>

promisify<T1, T2, TResult>((arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise<TResult>

المعلمات

fn

(arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void

المرتجعات

(arg1: T1, arg2: T2) => Promise<TResult>

promisify<T1, T2>((arg1: T1, arg2: T2, callback: (err?: any) => void) => void)

function promisify<T1, T2>(fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2) => Promise<void>

المعلمات

fn

(arg1: T1, arg2: T2, callback: (err?: any) => void) => void

المرتجعات

(arg1: T1, arg2: T2) => Promise<void>

promisify<T1, TResult>((arg1: T1, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, TResult>(fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void): (arg1: T1) => Promise<TResult>

المعلمات

fn

(arg1: T1, callback: (err: any, result: TResult) => void) => void

المرتجعات

(arg1: T1) => Promise<TResult>

promisify<T1>((arg1: T1, callback: (err?: any) => void) => void)

function promisify<T1>(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise<void>

المعلمات

fn

(arg1: T1, callback: (err?: any) => void) => void

المرتجعات

(arg1: T1) => Promise<void>

promisify<TCustom>(CustomPromisify<TCustom>)

يأخذ دالة تتبع نمط رد الاتصال الشائع للخطأ الأول، أي أخذ رد اتصال (err, value) => ... كوسيطة أخيرة، وإرجاع إصدار يرجع الوعود.

const util = require('node:util');
const fs = require('node:fs');

const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
  // Do something with `stats`
}).catch((error) => {
  // Handle the error.
});

أو، ما يعادل استخدام async functions:

const util = require('node:util');
const fs = require('node:fs');

const stat = util.promisify(fs.stat);

async function callStat() {
  const stats = await stat('.');
  console.log(`This directory is owned by ${stats.uid}`);
}

callStat();

إذا كانت هناك خاصية original[util.promisify.custom] موجودة، فسيرجع promisify قيمته، راجع Custom promisified functions.

يفترض promisify() أن original هي دالة تأخذ رد اتصال كوسيطة نهائية لها في جميع الحالات. إذا لم تكن original دالة، فسيطرح promisify() خطأ. إذا كانت original دالة ولكن وسيطتها الأخيرة ليست رد اتصال بالخطأ أولا، فسيستمر تمرير رد اتصال الخطأ الأول كوسيطة أخيرة له.

قد لا يعمل استخدام promisify() على أساليب الفئة أو الأساليب الأخرى التي تستخدم this كما هو متوقع ما لم تتم معالجتها بشكل خاص:

const util = require('node:util');

class Foo {
  constructor() {
    this.a = 42;
  }

  bar(callback) {
    callback(null, this.a);
  }
}

const foo = new Foo();

const naiveBar = util.promisify(foo.bar);
// TypeError: Cannot read property 'a' of undefined
// naiveBar().then(a => console.log(a));

naiveBar.call(foo).then((a) => console.log(a)); // '42'

const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'
function promisify<TCustom>(fn: CustomPromisify<TCustom>): TCustom

المعلمات

fn

CustomPromisify<TCustom>

المرتجعات

TCustom

promisify<TResult>((callback: (err: any, result: TResult) => void) => void)

function promisify<TResult>(fn: (callback: (err: any, result: TResult) => void) => void): () => Promise<TResult>

المعلمات

fn

(callback: (err: any, result: TResult) => void) => void

المرتجعات

() => Promise<TResult>

raiseCustomEvent(HTMLElement, string, any)

رفع حدث مخصص مع بيانات الحدث على عنصر HTML المحدد.

function raiseCustomEvent(element: HTMLElement, eventName: string, eventData: any)

المعلمات

element

HTMLElement

eventName

string

eventData

any

remove<T>((x: T) => boolean, T[])

function remove<T>(predicate: (x: T) => boolean, xs: T[])

المعلمات

predicate

(x: T) => boolean

xs

T[]

stripVTControlCharacters(string)

إرجاع str مع إزالة أي رموز إلغاء ANSI.

console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m'));
// Prints "value"
function stripVTControlCharacters(str: string): string

المعلمات

str

string

المرتجعات

string

styleText(ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[], string)

الاستقرار: 1.1 - التطوير النشط

ترجع هذه الدالة نصا منسقا بالنظر إلى format تمريره.

const { styleText } = require('node:util');
const errorMessage = styleText('red', 'Error! Error!');
console.log(errorMessage);

يوفر util.inspect.colors أيضا تنسيقات نصية مثل italicunderline ويمكنك الجمع بين كليهما:

console.log(
  util.styleText(['underline', 'italic'], 'My italic underlined message'),
);

عند تمرير صفيف من التنسيقات، يكون ترتيب التنسيق المطبق من اليسار إلى اليمين بحيث قد يقوم النمط التالي بالكتابة فوق النمط السابق.

console.log(
  util.styleText(['red', 'green'], 'text'), // green
);

يمكن العثور على القائمة الكاملة للتنسيقات في المعدلات.

function styleText(format: ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[], text: string): string

المعلمات

format

ForegroundColors | BackgroundColors | Modifiers | (ForegroundColors | BackgroundColors | Modifiers)[]

تنسيق نص أو صفيف من تنسيقات النص المعرفة في util.inspect.colors.

text

string

النص المطلوب تنسيقه.

المرتجعات

string

toUSVString(string)

إرجاع string بعد استبدال أي نقاط تعليمات برمجية بديلة (أو ما يعادلها، أي وحدات تعليمة برمجية بديلة غير مفصولة) ب "حرف استبدال" Unicode U+FFFD.

function toUSVString(string: string): string

المعلمات

string

string

المرتجعات

string

transferableAbortController()

إنشاء وإرجاع مثيل AbortController تم وضع علامة على AbortSignal الخاص به على أنه قابل للنقل ويمكن استخدامه مع structuredClone() أو postMessage().

function transferableAbortController(): AbortController

المرتجعات

AbortController

AbortController قابل للنقل

transferableAbortSignal(AbortSignal)

وضع علامة على AbortSignal المحددة على أنها قابلة للنقل بحيث يمكن استخدامها معstructuredClone()postMessage().

const signal = transferableAbortSignal(AbortSignal.timeout(100));
const channel = new MessageChannel();
channel.port2.postMessage(signal, [signal]);
function transferableAbortSignal(signal: AbortSignal): AbortSignal

المعلمات

signal

AbortSignal

The AbortSignal

المرتجعات

AbortSignal

نفس AbortSignal