Утилиты¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:util поддерживает потребности внутренних API Node.js. Многие из утилит полезны и для разработчиков приложений и модулей. Чтобы получить к нему доступ:
1 | |
util.callbackify(original)¶
original<Function>Функцияasync.- Возвращает:
<Function>функцию в стиле обратного вызова
Принимает функцию async (или функцию, возвращающую Promise) и возвращает функцию в стиле обратного вызова по ошибке, т.е. принимая в качестве последнего аргумента обратный вызов (err, value) => .... В обратном вызове первым аргументом будет причина отказа (или null, если Promise разрешилась), а вторым аргументом будет разрешенное значение.
1 2 3 4 5 6 7 8 9 10 11 | |
Будет печататься:
1 | |
Обратный вызов выполняется асинхронно и имеет ограниченный стек-трейс. Если обратный вызов отбрасывается, процесс выдает событие 'uncaughtException', и, если оно не обработано, завершается.
Поскольку null имеет особое значение в качестве первого аргумента обратного вызова, если обернутая функция отклоняет Promise с ложным значением в качестве причины, значение обертывается в Error с сохранением исходного значения в поле с именем reason.
1 2 3 4 5 6 7 8 9 10 11 12 | |
util.debuglog(section[, callback]).¶
section<string>Строка, идентифицирующая часть приложения, для которой создается функцияdebuglog.callback<Function>Обратный вызов, вызываемый при первом вызове функции логирования с аргументом функции, который является более оптимизированной функцией логирования.- Возвращает:
<Function>Функция протоколирования.
Метод util.debuglog() используется для создания функции, которая условно записывает отладочные сообщения в stderr на основе существования переменной окружения NODE_DEBUG. Если имя section встречается в значении этой переменной окружения, то возвращаемая функция работает аналогично console.error(). Если нет, то возвращаемая функция не работает.
1 2 3 4 | |
Если эту программу запустить с NODE_DEBUG=foo в окружении, то она выдаст что-то вроде:
1 | |
где 3245 - идентификатор процесса. Если программа не запущена с установленной переменной окружения, то она ничего не выведет.
Секция section также поддерживает подстановочный знак:
1 2 3 4 | |
если его запустить с NODE_DEBUG=foo* в окружении, то он выдаст что-то вроде:
1 | |
В переменной окружения NODE_DEBUG можно указать несколько имен section, разделенных запятыми: NODE_DEBUG=fs,net,tls.
Необязательный аргумент callback может быть использован для замены функции протоколирования другой функцией, не имеющей инициализации или ненужной обертки.
1 2 3 4 5 6 | |
debuglog().enabled¶
Геттер util.debuglog().enabled используется для создания теста, который может быть использован в условиях, основанных на существовании переменной окружения NODE_DEBUG. Если имя section встречается в значении этой переменной окружения, то возвращаемое значение будет true. Если нет, то возвращаемое значение будет false.
1 2 3 4 5 | |
Если эту программу запустить с NODE_DEBUG=foo в окружении, то она выдаст что-то вроде:
1 | |
util.debug(section).¶
Псевдоним для util.debuglog. Использование позволяет читать то, что не подразумевает ведение журнала при использовании только util.debuglog().enabled.
util.deprecate(fn, msg[, code]).¶
fn<Function>Функция, которая устаревает.msg<string>Предупреждающее сообщение, которое будет отображаться при вызове устаревшей функции.code<string>Код устаревания.- Возвращает:
<Function>Устаревшая функция, обернутая для выдачи предупреждения.
Метод util.deprecate() оборачивает fn (которая может быть функцией или классом) таким образом, что она помечается как устаревшая.
1 2 3 4 5 | |
При вызове util.deprecate() возвращает функцию, которая выдает DeprecationWarning, используя событие 'warning'. Предупреждение будет выдано и выведено в stderr при первом вызове возвращаемой функции. После того, как предупреждение будет выдано, обернутая функция будет вызвана без выдачи предупреждения.
Если в нескольких вызовах util.deprecate() указан один и тот же необязательный code, предупреждение будет выдано только один раз для этого code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Если используются флаги командной строки --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-deprecation и process.traceDeprecation.
util.format(format[, ...args])¶
format<string>Строка формата, подобнаяprintf.
Метод util.format() возвращает отформатированную строку, используя первый аргумент как printf-подобную строку формата, которая может содержать ноль или более спецификаторов формата. Каждый спецификатор заменяется преобразованным значением соответствующего аргумента. Поддерживаются следующие спецификаторы:
%s:Stringбудет использоваться для преобразования всех значений, кромеBigInt,Objectи-0. ЗначенияBigIntбудут представлены символомn, а Объекты, не имеющие определенной пользователем функцииtoString, проверяются с помощьюutil.inspect()с опциями{ depth: 0, colors: false, compact: 3 }.%d:Numberбудет использоваться для преобразования всех значений, кромеBigIntиSymbol.%i:parseInt(value, 10)используется для всех значений, кромеBigIntиSymbol.%f:parseFloat(value)используется для всех значений, кромеSymbol.%j: JSON. Заменяется строкой'[Circular]', если аргумент содержит круговые ссылки.%o:Object. Строковое представление объекта с общим форматированием объектов JavaScript. Аналогичноutil.inspect()с опциями{ showHidden: true, showProxy: true }. Это покажет полный объект, включая неперечисляемые свойства и прокси.%O:Object. Строковое представление объекта с общим форматированием объекта JavaScript. Аналогичноutil.inspect()без опций. Будет показан полный объект, не включая неперечисляемые свойства и прокси.%c:CSS. Этот спецификатор игнорируется и пропускает все переданные CSS.%%: одиночный знак процента ('%'). Аргумент не используется.- Возвращает:
<string>форматированная строка.
Если спецификатор не имеет соответствующего аргумента, он не заменяется:
1 2 | |
Значения, не являющиеся частью строки формата, форматируются с помощью util.inspect(), если их тип не string.
Если в метод util.format() передано больше аргументов, чем количество спецификаторов, дополнительные аргументы конкатенируются в возвращаемую строку, разделяясь пробелами:
1 2 | |
Если первый аргумент не содержит допустимого спецификатора формата, util.format() возвращает строку, которая является конкатенацией всех аргументов, разделенных пробелами:
1 2 | |
Если в util.format() передан только один аргумент, он возвращается в исходном виде без какого-либо форматирования:
1 2 | |
util.format() - это синхронный метод, который предназначен для отладки. Некоторые входные значения могут иметь значительный перерасход производительности, который может заблокировать цикл событий. Используйте эту функцию с осторожностью и никогда в горячем пути кода.
util.formatWithOptions(inspectOptions, format[, ...args]).¶
Эта функция идентична util.format(), за исключением того, что она принимает аргумент inspectOptions, который определяет опции, передаваемые util.inspect().
1 2 3 4 5 | |
util.getSystemErrorName(err)¶
Возвращает строковое имя для числового кода ошибки, который поступает из API Node.js. Сопоставление между кодами ошибок и именами ошибок зависит от платформы. Имена распространенных ошибок см. в Common System Errors.
1 2 3 4 | |
util.getSystemErrorMap().¶
- Возвращает: {Map}
Возвращает карту всех кодов системных ошибок, доступных из API Node.js. Сопоставление между кодами ошибок и именами ошибок зависит от платформы. Имена распространенных ошибок см. в Common System Errors.
1 2 3 4 5 | |
util.inherits(constructor, superConstructor)¶
Стабильность: 3 – Закрыто
Наследие: Используйте синтаксис классов ES2015 и ключевое слово extends вместо этого.
constructor<Function>superConstructor<Function>
Использование util.inherits() не рекомендуется. Пожалуйста, используйте ключевые слова ES6 class и extends, чтобы получить поддержку наследования на уровне языка. Также обратите внимание, что эти два стиля семантически несовместимы.
Наследуйте методы прототипа из одного конструктора в другой. Прототип constructor будет установлен на новый объект, созданный из superConstructor.
Это в основном добавляет некоторую проверку ввода поверх Object.setPrototypeOf(constructor.prototype, superConstructor.prototype). В качестве дополнительного удобства, superConstructor будет доступен через свойство constructor.super_.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Пример ES6 с использованием class и extends:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
util.inspect(object[, options])¶
util.inspect(object[, showHidden[, depth[, colors]]]).¶
object<any>Любой примитив JavaScript илиObject.options<Object>showHidden<boolean>Еслиtrue, то неперечисляемые символы и свойстваобъектабудут включены в отформатированный результат. Также включаются записиWeakMapиWeakSet, а также определяемые пользователем свойства прототипа (за исключением свойств метода). По умолчанию:false.depth<number>Определяет количество раз для перебора при форматированииобъекта. Это полезно для проверки больших объектов. Для вызова до максимального размера стека вызовов передайтеInfinityилиnull. По умолчанию:2.colors<boolean>Еслиtrue, вывод будет оформлен с использованием цветовых кодов ANSI. Цвета можно настраивать. Смотрите Настройка цветовutil.inspect. По умолчанию:false.customInspect<boolean>. Еслиfalse, то функции[util.inspect.custom](depth, opts, inspect)не вызываются. По умолчанию:true.showProxy<boolean>Еслиtrue, то проверкаProxyвключает объектыtargetиhandler. По умолчанию:false.maxArrayLength<integer>Определяет максимальное количество элементовArray,TypedArray,Map,Set,WeakMapиWeakSet, которые следует включать при форматировании. Установите значениеnullилиInfinity, чтобы показать все элементы. Установите значение0или отрицательное, чтобы не показывать никаких элементов. По умолчанию:100.maxStringLength<integer>Определяет максимальное количество символов для включения при форматировании. Установите значениеnullилибесконечность, чтобы показать все элементы. Установите0или отрицательное значение, чтобы не показывать никаких символов. По умолчанию:10000.breakLength<integer>Длина, при которой вводимые значения разбиваются на несколько строк. Установите значениеInfinityдля форматирования ввода в виде одной строки (в сочетании сcompact, установленным вtrueили любым числом >=1). По умолчанию:80.compact{boolean|integer} Установка этого параметра вfalseприводит к тому, что каждый ключ объекта будет отображаться на новой строке. Текст, длина которого превышаетbreakLength, будет обрываться на новых строках. Если задано число, то наиболееnвнутренних элементов объединяются на одной строке, пока все свойства помещаются вbreakLength. Короткие элементы массива также группируются вместе. F
1 2 3 | |
- Возвращает:
<string>Представлениеобъекта.
Метод util.inspect() возвращает строковое представление объекта, предназначенное для отладки. Вывод util.inspect может измениться в любой момент и не должен зависеть от него программно. Могут быть переданы дополнительные опции, которые изменяют результат. util.inspect() будет использовать имя конструктора и/или @@toStringTag для создания идентифицируемой метки для проверяемого значения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Циркулярные ссылки указывают на свой якорь с помощью ссылочного индекса:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
В следующем примере проверяются все свойства объекта util:
1 2 3 4 5 | |
В следующем примере показан эффект опции compact:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | |
Опция showHidden позволяет просматривать записи WeakMap и WeakSet. Если записей больше, чем maxArrayLength, то нет гарантии, какие записи будут отображены. Это означает, что получение одних и тех же записей WeakSet дважды может привести к разным результатам. Более того, записи, в которых не осталось сильных ссылок, могут быть собраны в мусор в любое время.
1 2 3 4 5 6 7 8 | |
Опция sorted гарантирует, что порядок вставки свойств объекта не повлияет на результат работыutil.inspect()`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Опция numericSeparator добавляет ко всем числам подчеркивание через каждые три цифры.
1 2 3 4 5 6 7 8 9 | |
util.inspect() - это синхронный метод, предназначенный для отладки. Его максимальная длина выходных данных составляет приблизительно 128 МиБ. Вводы, которые приводят к более длинному выводу, будут усечены.
Настройка цветов util.inspect.¶
Вывод цвета (если он включен) в util.inspect настраивается глобально через свойства util.inspect.styles и util.inspect.colors.
util.inspect.styles - это карта, связывающая имя стиля с цветом из util.inspect.colors.
По умолчанию используются следующие стили и связанные с ними цвета:
bigint:yellow.булево:желтыйдата:маджента.модуль:андерлайнимя: (без стилизации)null:жирныйчисло:желтыйregexp:redспециальный:синий(например,Proxies)строка:зеленыйсимвол:зеленыйнеопределенный:серый
Цветовая стилизация использует управляющие коды ANSI, которые могут поддерживаться не на всех терминалах. Для проверки поддержки цветов используйте tty.hasColors().
Ниже перечислены предопределенные управляющие коды (сгруппированные как "Модификаторы", "Цвета переднего плана" и "Цвета заднего плана").
Модификаторы¶
Modifier support varies throughout different terminals. They will mostly be ignored, if not supported.
reset- Resets all (color) modifiers to their defaults- bold - Make text bold
- italic - Make text italic
- underline - Make text underlined
strikethrough- Puts a horizontal line through the center of the text (Alias:strikeThrough,crossedout,crossedOut)hidden- Prints the text, but makes it invisible (Alias: conceal)- dim - Decreased color intensity (Alias:
faint) - overlined - Make text overlined
- blink - Hides and shows the text in an interval
- inverse - Swap foreground and background colors (Alias:
swapcolors,swapColors) - doubleunderline - Make text double underlined (Alias:
doubleUnderline) - framed - Draw a frame around the text
Цвета переднего плана¶
черныйкрасный- зелёный
жёлтыйсиний- маджента
- циан
белыйсерый(псевдонимы:grey,blackBright)redBrightзеленыйжелто-светлыйblueBrightmagentaBrightcyanBrightбелый
Фоновые цвета¶
bgBlackbgRedbgGreenbgYellowbgBluebgMagentabgCyanbgWhitebgGray(псевдонимы:bgGrey,bgBlackBright)bgRedBrightbgGreenBrightbgYellowBrightbgBlueBrightbgMagentaBrightbgCyanBrightbgWhiteBright
Пользовательские функции проверки объектов¶
Объекты могут также определять свои собственные [util.inspect.custom](depth, opts, inspect) функции, которые util.inspect() будет вызывать и использовать результат при инспектировании объекта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
Пользовательские функции [util.inspect.custom](depth, opts, inspect) обычно возвращают строку, но могут возвращать значение любого типа, которое будет соответствующим образом отформатировано util.inspect().
1 2 3 4 5 6 7 8 9 10 11 | |
util.inspect.custom¶
- {символ}, который можно использовать для объявления пользовательских функций inspect.
Помимо того, что этот символ доступен через util.inspect.custom, он зарегистрирован глобально и может быть доступен в любой среде как Symbol.for('nodejs.util.inspect.custom').
Использование этого позволяет писать переносимый код, так что пользовательская функция inspect используется в среде Node.js и игнорируется в браузере. Сама функция util.inspect() передается в качестве третьего аргумента в пользовательскую функцию inspect, чтобы обеспечить дальнейшую переносимость.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Более подробную информацию смотрите в разделе Пользовательские функции проверки объектов.
util.inspect.defaultOptions.¶
Значение defaultOptions позволяет настраивать параметры по умолчанию, используемые util.inspect. Это полезно для таких функций, как console.log или util.format, которые неявно вызывают util.inspect. Он должен быть установлен в объект, содержащий одну или несколько допустимых опций util.inspect(). Также поддерживается непосредственная установка свойств опций.
1 2 3 4 5 6 | |
util.isDeepStrictEqual(val1, val2)¶
Возвращает true, если существует глубокое строгое равенство между val1 и val2. В противном случае возвращается false.
Дополнительную информацию о глубоком строгом равенстве смотрите в assert.deepStrictEqual().
Класс: util.MIMEType¶
Стабильность: 1 – Экспериментальная
Экспериментальная
Реализация класса MIMEType.
В соответствии с соглашениями браузера, все свойства объектов MIMEType реализованы как геттеры и сеттеры прототипа класса, а не как свойства данных самого объекта.
MIME-строка - это структурированная строка, содержащая несколько значимых компонентов. При разборе возвращается объект MIMEType, содержащий свойства для каждого из этих компонентов.
Конструктор: new MIMEType(input)¶
input<string>Входной MIME для разбора
Создает новый объект MIMEType путем разбора input.
1 2 3 | |
1 2 3 | |
Если вход не является допустимым MIME, будет выдана ошибка TypeError. Обратите внимание, что будет предпринята попытка преобразовать заданные значения в строки. Например:
1 2 3 4 5 6 | |
1 2 3 4 5 6 | |
mime.type¶
Получает и устанавливает часть типа MIME.
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 | |
mime.subtype¶
Получает и устанавливает часть подтипа MIME.
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 | |
mime.essence¶
Получает сущность MIME. Это свойство доступно только для чтения. Используйте mime.type или mime.subtype для изменения MIME.
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 | |
mime.params¶
- {MIMEParams}
Получает объект MIMEParams, представляющий параметры MIME. Это свойство доступно только для чтения. Подробности см. в документации MIMEParams.
mime.toString().¶
- Возвращает:
<string>
Метод toString() объекта MIMEType возвращает сериализованный MIME.
Из-за необходимости соответствия стандарту этот метод не позволяет пользователям настраивать процесс сериализации MIME.
mime.toJSON().¶
- Возвращает:
<string>.
Псевдоним для mime.toString().
Этот метод автоматически вызывается, когда объект MIMEType сериализуется с помощью JSON.stringify().
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 | |
Класс: util.MIMEParams.¶
API MIMEParams предоставляет доступ на чтение и запись к параметрам MIMEType.
Конструктор: new MIMEParams().¶
Создает новый объект MIMEParams с пустыми параметрами
1 2 3 | |
1 2 3 | |
mimeParams.delete(name).¶
name<string>
Удаляет все пары имя-значение, имя которых равно name.
mimeParams.entries().¶
- Возвращает: {Iterator}
Возвращает итератор по каждой из пар "имя-значение" в параметрах. Каждый элемент итератора представляет собой JavaScript массив. Первый элемент массива - это имя, второй элемент массива - значение.
mimeParams.get(name).¶
Возвращает значение первой пары имя-значение, имя которой равно name. Если таких пар нет, возвращается null.
mimeParams.has(name).¶
Возвращает true, если существует хотя бы одна пара имя-значение, имя которой равно name.
mimeParams.keys().¶
- Возвращает:
<Iterator>
Возвращает итератор по именам каждой пары имя-значение.
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
mimeParams.set(name, value).¶
Устанавливает значение в объекте MIMEParams, связанном с name, в value. Если существуют уже существующие пары имя-значение, имена которых равны name, установите значение первой такой пары в value.
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
mimeParams.values().¶
- Возвращает:
<Iterator>
Возвращает итератор по значениям каждой пары имя-значение.
mimeParams[@@iterator]().¶
- Возвращает:
<Iterator>
Псевдоним для mimeParams.entries().
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |
util.parseArgs([config])¶
config<Object>Используется для предоставления аргументов для разбора и для настройки парсера.configподдерживает следующие свойства:args<string[]>массив строк аргументов. По умолчанию:process.argvс удаленнымиexecPathиfilename.options<Object>Используется для описания аргументов, известных синтаксическому анализатору. Ключамиoptionsявляются длинные имена опций, а значениями -<Object>, принимающие следующие свойства:type<string>Тип аргумента, который должен быть либоboolean, либоstring.multiple<boolean>Может ли этот параметр быть указан несколько раз. Еслиtrue, все значения будут собраны в массив. Еслиfalse, то значения для опции будут последними. По умолчанию:false.short<string>Односимвольный псевдоним для опции.default{string | boolean | string[] | boolean[]} Значение опции по умолчанию, если оно не задано args. Оно должно быть того же типа, что и свойствоtype. Еслиmultipleимеет значениеtrue, это должен быть массив.
strict<boolean>Должна ли возникать ошибка при встрече неизвестных аргументов или при передаче аргументов, не соответствующихтипу, заданному вoptions. По умолчанию:true.allowPositionals<boolean>Принимает ли эта команда позиционные аргументы. По умолчанию:false, еслиstrictравноtrue, иначеtrue.tokens<boolean>Возвращает разобранные лексемы. Это полезно для расширения встроенного поведения, от добавления дополнительных проверок до переработки токенов различными способами. По умолчанию:false.
- Возвращает:
<Object>Разобранные аргументы командной строки:values<Object>Отображение разобранных имен опций с их значениями<string>или<boolean>.positionals<string[]>Позиционные аргументы.токены{Object[] | undefined} См. раздел parseArgs tokens. Возвращается только еслиconfigвключаетtokens: true.
Предоставляет API более высокого уровня для разбора аргументов командной строки, чем непосредственное взаимодействие с process.argv. Принимает спецификацию ожидаемых аргументов и возвращает структурированный объект с разобранными опциями и позициями.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
parseArgs tokens.¶
Детальная информация о разборе доступна для добавления пользовательского поведения, если указать tokens: true в конфигурации. Возвращаемые токены имеют свойства, описывающие:
- все токены
- токены опций
- позиционные маркеры
value<string>Значение позиционного аргумента в args (т.е.args[index]).
- опция-терминатор токена
Возвращаемые лексемы располагаются в том порядке, в котором они встречаются во входных args. Опции, которые встречаются в args более одного раза, выдают маркер для каждого использования. Короткие группы опций, такие как -xy, расширяются до маркера для каждой опции. Таким образом, -xxx дает три токена.
Например, чтобы использовать возвращенные маркеры для добавления поддержки отрицаемой опции, такой как --no-color, маркеры могут быть обработаны для изменения значения, хранящегося для отрицаемой опции.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Пример использования, показывающий отрицаемые варианты, и когда вариант используется несколькими способами, выигрывает последний.
1 2 3 4 5 6 7 8 | |
util.promisify(original)¶
original<Function>- Возвращает:
<Function>
Принимает функцию, следуя общему стилю обратного вызова по ошибке, т.е. принимая (err, value) => ... обратный вызов в качестве последнего аргумента, и возвращает версию, которая возвращает обещания.
1 2 3 4 5 6 7 8 9 10 11 | |
Или, эквивалентно, используя async function:
1 2 3 4 5 6 7 8 9 | |
Если присутствует свойство original[util.promisify.custom], promisify вернет его значение, см. Custom promisified functions.
promisify() предполагает, что original - это функция, принимающая обратный вызов в качестве последнего аргумента во всех случаях. Если original не является функцией, promisify() выдаст ошибку. Если original является функцией, но ее последний аргумент не является обратным вызовом с ошибкой, то в качестве последнего аргумента ей будет передан обратный вызов с ошибкой.
Использование promisify() в методах класса или других методах, использующих this, может работать не так, как ожидается, если только это не будет обработано специальным образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Пользовательские промисифицированные функции¶
Используя символ util.promisify.custom, можно переопределить возвращаемое значение функции util.promisify():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Это может быть полезно в тех случаях, когда исходная функция не соответствует стандартному формату принятия обратного вызова, связанного с ошибкой, в качестве последнего аргумента.
Например, с функцией, принимающей (foo, onSuccessCallback, onErrorCallback):
1 2 3 4 5 | |
Если promisify.custom определена, но не является функцией, promisify() выдаст ошибку.
util.promisify.custom¶
- {символ}, который можно использовать для объявления пользовательских промисифицированных вариантов функций, см. Пользовательские промисифицированные функции.
Помимо того, что этот символ доступен через util.promisify.custom, он зарегистрирован глобально и может быть доступен в любом окружении как Symbol.for('nodejs.util.promisify.custom').
Например, с функцией, которая принимает (foo, onSuccessCallback, onErrorCallback):
1 2 3 4 5 6 7 8 9 | |
util.stripVTControlCharacters(str)¶
Возвращает str с удаленными кодами ANSI.
1 2 3 4 | |
Класс: util.TextDecoder.¶
Реализация API TextDecoder WHATWG Encoding Standard.
1 2 3 | |
Поддерживаемые кодировки WHATWG¶
Согласно WHATWG Encoding Standard, кодировки, поддерживаемые API TextDecoder, приведены в таблицах ниже. Для каждой кодировки может использоваться один или несколько псевдонимов.
Различные конфигурации сборки Node.js поддерживают разные наборы кодировок. (см. Интернационализация)
Кодировки, поддерживаемые по умолчанию (с полными данными ICU)¶
| Кодировка | Псевдонимы |
|---|---|
'ibm866' | '866', 'cp866', 'csibm866' |
'iso-8859-2' | 'csisolatin2', 'iso-ir-101', 'iso8859-2', 'iso88592', 'iso_8859-2', 'iso_8859-2:1987', 'l2', 'latin2' |
'iso-8859-3' | 'csisolatin3', 'iso-ir-109', 'iso8859-3', 'iso88593', 'iso_8859-3', 'iso_8859-3:1988', 'l3', 'latin3' |
'iso-8859-4' | 'csisolatin4', 'iso-ir-110', 'iso8859-4', 'iso88594', 'iso_8859-4', 'iso_8859-4:1988', 'l4', 'latin4' |
'iso-8859-5' | 'csisolatincyrillic', 'cyrillic', 'iso-ir-144', 'iso8859-5', 'iso88595', 'iso_8859-5', 'iso_8859-5:1988' |
iso-8859-6'` | arabic', ``asmo-708' , csiso88596e' `, csiso88596i', ``csisolatinarabic' , ecma-114' `, `iso-8859-6-e`, `iso-8859-6-i`, `iso-ir-127`, `iso8859-6`, `iso88596`, `iso_8859-6`, `iso_8859-6`,iso_8859-6: 1987'` | |
'iso-8859-7' | 'csisolatingreek', 'ecma-118', 'elot_928', 'greek', 'greek8', 'iso-ir-126', 'iso8859-7', 'iso88597', 'iso_8859-7', 'iso_8859-7:1987', 'sun_eu_greek' |
'iso-8859-8' | 'csiso88598e', 'csisolatinhebrew', 'hebrew', 'iso-8859-8-e', 'iso-ir-138', 'iso8859-8', 'iso88598', 'iso_8859-8', 'iso_8859-8', 'iso_8859-8:1988', 'visual' |
iso-8859-8-i'` | csiso88598i', ``логический' |
| 'iso-8859-10' | 'csisolatin6', 'iso-ir-157', 'iso8859-10', 'iso885910', 'l6', 'latin6' | | | 'iso-8859-13' | 'iso8859-13', 'iso885913' | | | 'iso-8859-14' | 'iso8859-14', 'iso885914' | | | 'iso-8859-15' | 'csisolatin9', 'iso8859-15', 'iso885915', 'iso_8859-15', 'l9' | | 'koi8-r' | 'cskoi8r', 'koi', 'koi8', 'koi8_r' | | 'koi8-u' | 'koi8-ru' | | 'macintosh' | 'csmacintosh', 'mac', 'x-mac-roman' | | | | 'windows-874' | 'dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620' | | 'windows-1250' | 'cp1250', 'x-cp1250' | | | 'windows-1251' | 'cp1251', 'x-cp1251' | | | 'windows-1252' | 'ansi_x3. 4-1968', 'ascii', 'cp1252', 'cp819', 'csisolatin1', 'ibm819', 'iso-8859-1', 'iso-ir-100', 'iso8859-1', 'iso88591', 'iso_8859-1', 'iso_8859-1', 'iso_8859-1: 1987', 'l1', 'latin1', 'us-ascii', 'x-cp1252' | | 'windows-1253' | 'cp1253', 'x-cp1253'.
| | 'windows-1254' | 'cp1254', 'csisolatin5', 'iso-8859-9', 'iso-ir-148', 'iso8859-9', 'iso88599', 'iso_8859-9', 'iso_8859-9:1989', 'l5', 'latin5', 'x-cp1254' | | 'windows-1255' | 'cp1255', 'x-cp1255' | | | 'windows-1256' | 'cp1256', 'x-cp1256' | | | 'windows-1257' | 'cp1257', 'x-cp1257' | | | 'windows-1258' | 'cp1258', 'x-cp1258' | | | x-mac-cyrillic'` |x-mac-ukrainian'| ``x-mac-ukrainian' | | 'gbk' | 'chinese', 'csgb2312', 'csiso58gb231280', 'gb2312', 'gb_2312', 'gb_2312-80', 'iso-ir-58', 'x-gbk' | | | 'gb18030'| | | | | |'big5|'big5-hkscs, `'cn-big5, 'csbig5``,'x-x-big5`| | |'euc-jp'|'cseucpkdfmtjapanese','x-euc-jp'| | |'iso-2022-jp'|'csiso2022jp'| |'shift_jis'|'csshiftjis','ms932','ms_kanji','shift-jis','sjis','windows-31j','x-sjis'`.
| 'euc-kr'|'cseuckr','csksc56011987','iso-ir-149','korean','ks_c_5601-1987','ks_c_5601-1989','ksc5601','ksc_5601','windows-949'` |
Кодировки, поддерживаемые при сборке Node.js с опцией small-icu.¶
| Кодировка | Псевдонимы |
|---|---|
'utf-8' | 'unicode-1-1-utf-8', 'utf8' |
'utf-16le' | |'utf-16' | |
'utf-16be' |
Кодировки, поддерживаемые при отключенном ICU¶
| Кодировка | Псевдонимы |
|---|---|
'utf-8' | 'unicode-1-1-utf-8', 'utf8' |
'utf-16le' | |'utf-16' | . |
Кодировка 'iso-8859-16', указанная в WHATWG Encoding Standard, не поддерживается.
new TextDecoder([encoding[, options]]).¶
encoding<string>Определяеткодировку, которую поддерживает данный экземплярТекстДекодера. По умолчанию:'utf-8'.options<Object>fatal<boolean>true, если сбои декодирования являются фатальными. Эта опция не поддерживается, если ICU отключен (см. Интернационализация). По умолчанию:false.ignoreBOM<boolean>Когдаtrue,TextDecoderбудет включать метку порядка байтов в результат декодирования. Приfalseметка порядка байтов будет удалена из результата. Эта опция используется, только еслиencoding-'utf-8','utf-16be'или'utf-16le'. По умолчанию:false.
Создает новый экземпляр TextDecoder. В encoding может быть указана одна из поддерживаемых кодировок или псевдоним.
Класс TextDecoder также доступен в глобальном объекте.
textDecoder.decode([input[, options]]).¶
вход{ArrayBuffer|DataView|TypedArray} ЭкземплярArrayBuffer,DataViewилиTypedArray, содержащий закодированные данные.options<Object>stream<boolean>true, если ожидаются дополнительные порции данных. По умолчанию:false.
- Возвращает:
<string>
Декодирует input и возвращает строку. Если options.stream имеет значение true, все неполные последовательности байтов, встречающиеся в конце ввода, буферизируются внутри и выдаются после следующего вызова textDecoder.decode().
Если textDecoder.fatal имеет значение true, то возникающие ошибки декодирования приведут к выбросу TypeError.
textDecoder.encoding¶
Кодировка, поддерживаемая экземпляром TextDecoder.
textDecoder.fatal¶
Значение будет true, если в результате ошибок декодирования будет выброшена TypeError.
textDecoder.ignoreBOM¶
Значение будет true, если результат декодирования будет включать метку порядка байтов.
Класс: util.TextEncoder.¶
Реализация API TextEncoder WHATWG Encoding Standard. Все экземпляры TextEncoder поддерживают только кодировку UTF-8.
1 2 | |
Класс TextEncoder также доступен на глобальном объекте.
textEncoder.encode([input])¶
ввод<string>Текст для кодирования. По умолчанию: пустая строка.- Возвращает:
<Uint8Array>
UTF-8 кодирует строку input и возвращает Uint8Array, содержащий закодированные байты.
textEncoder.encodeInto(src, dest).¶
- src
[`](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#String_type) Текст для кодирования. dest<Uint8Array>Массив для хранения результата кодирования.- Возвращает:
<Object>
UTF-8 кодирует строку rc в Uint8Array dest и возвращает объект, содержащий считанные единицы кода Unicode и записанные байты UTF-8.
1 2 3 4 | |
textEncoder.encoding¶
Кодировка, поддерживаемая экземпляром TextEncoder. Всегда устанавливается на 'utf-8'.
util.toUSVString(string).¶
string<string>
Возвращает строку после замены любых суррогатных кодовых точек (или, эквивалентно, любых непарных суррогатных кодовых единиц) на "символ замены" Юникода U+FFFD.
util.transferableAbortController().¶
Стабильность: 1 – Экспериментальная
Экспериментальный
Создает и возвращает экземпляр {AbortController}, чей <AbortSignal> помечен как передаваемый и может быть использован с structuredClone() или postMessage().
util.transferableAbortSignal(signal).¶
Стабильность: 1 – Экспериментальная
Экспериментальная
signal<AbortSignal>- Возвращает:
<AbortSignal>
Маркирует данный <AbortSignal> как передаваемый, чтобы его можно было использовать с structuredClone() и postMessage().
1 2 3 4 5 | |
util.aborted(signal, resource)¶
Стабильность: 1 – Экспериментальная
Экспериментальная
signal<AbortSignal>ресурс<Object>Любая ненулевая сущность, ссылка на которую удерживается слабо.- Возвращает:
<Promise>
Слушает событие прерывания на предоставленном signal и возвращает обещание, которое будет выполнено, когда signal будет прерван. Если переданный ресурс будет собран до прерывания signal, возвращаемое обещание будет оставаться невыполненным неопределенное время.
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |
util.types¶
util.types обеспечивает проверку типов для различных видов встроенных объектов. В отличие от instanceof или Object.prototype.toString.call(value), эти проверки не проверяют свойства объекта, доступные из JavaScript (например, его прототип), и обычно имеют накладные расходы на обращение к C++.
Результат, как правило, не дает никаких гарантий относительно того, какие свойства или поведение значение раскрывает в JavaScript. Они в первую очередь полезны для разработчиков аддонов, которые предпочитают делать проверку типов в JavaScript.
API доступен через require('node:util').types или require('node:util/types').
util.types.isAnyArrayBuffer(value)¶
Возвращает true, если значение является встроенным экземпляром ArrayBuffer или SharedArrayBuffer.
См. также util.types.isArrayBuffer() и util.types.isSharedArrayBuffer().
1 2 | |
util.types.isArrayBufferView(value)¶
Возвращает true, если значение является экземпляром одного из представлений ArrayBuffer, таких как типизированные объекты массивов или DataView. Эквивалентно ArrayBuffer.isView().
1 2 3 4 5 6 | |
util.types.isArgumentsObject(value)¶
Возвращает true, если значение является объектом arguments.
1 2 3 | |
util.types.isArrayBuffer(value)¶
Возвращает true, если значение является экземпляром встроенного ArrayBuffer. Это не включает экземпляры SharedArrayBuffer. Обычно желательно проверять оба варианта; см. об этом в util.types.isAnyArrayBuffer().
1 2 | |
util.types.isAsyncFunction(value)¶
Возвращает true, если значение является асинхронной функцией. Это только сообщает о том, что видит движок JavaScript; в частности, возвращаемое значение может не совпадать с исходным кодом, если использовался инструмент транспиляции.
1 2 | |
util.types.isBigInt64Array(value)¶
Возвращает true, если значение является экземпляром BigInt64Array.
1 2 | |
util.types.isBigUint64Array(value)¶
Возвращает true, если значение является экземпляром BigUint64Array.
1 2 | |
util.types.isBooleanObject(value)¶
Возвращает true, если значение является булевым объектом, например, созданным с помощью new Boolean().
1 2 3 4 5 6 | |
util.types.isBoxedPrimitive(value)¶
Возвращает true, если значение является любым объектом boxed primitive, например, созданным с помощью new Boolean(), new String() или Object(Symbol()).
Например:
1 2 3 4 5 | |
util.types.isCryptoKey(value)¶
Возвращает true, если значение является {CryptoKey}, false в противном случае.
util.types.isDataView(value)¶
Возвращает true, если значение является встроенным экземпляром DataView.
1 2 3 | |
См. также ArrayBuffer.isView().
util.types.isDate(value)¶
Возвращает true, если значение является встроенным экземпляром Date.
1 | |
util.types.isExternal(value)¶
Возвращает true, если значение является родным External значением.
Родное External значение - это специальный тип объекта, который содержит необработанный указатель C++ (void*) для доступа из родного кода и не имеет других свойств. Такие объекты создаются либо внутренними компонентами Node.js, либо нативными аддонами. В JavaScript это frozen объекты с прототипом null.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 | |
Более подробную информацию о napi_create_external смотрите в napi_create_external().
util.types.isFloat32Array(value)¶
Возвращает true, если значение является встроенным экземпляром Float32Array.
1 2 3 | |
util.types.isFloat64Array(value)¶
Возвращает true, если значение является встроенным экземпляром Float64Array.
1 2 3 | |
util.types.isGeneratorFunction(value)¶
Возвращает true, если значение является генераторной функцией. Это только сообщает о том, что видит движок JavaScript; в частности, возвращаемое значение может не совпадать с исходным кодом, если использовался инструмент транспиляции.
1 2 | |
util.types.isGeneratorObject(value)¶
Возвращает true, если значение является объектом генератора, возвращенным встроенной функцией генератора. Это только сообщает о том, что видит движок JavaScript; в частности, возвращаемое значение может не совпадать с исходным кодом, если использовался инструмент транспиляции.
1 2 3 | |
util.types.isInt8Array(value)¶
Возвращает true, если значение является экземпляром встроенного Int8Array.
1 2 3 | |
util.types.isInt16Array(value)¶
Возвращает true, если значение является экземпляром встроенного Int16Array.
1 2 3 | |
util.types.isInt32Array(value)¶
Возвращает true, если значение является экземпляром встроенного Int32Array.
1 2 3 | |
util.types.isKeyObject(value)¶
Возвращает true, если value является {KeyObject}, false в противном случае.
util.types.isMap(value)¶
Возвращает true, если значение является экземпляром встроенной Map.
1 | |
util.types.isMapIterator(value)¶
Возвращает true, если значение является итератором, возвращаемым для встроенного экземпляра Map.
1 2 3 4 5 | |
util.types.isModuleNamespaceObject(value)¶
Возвращает true, если значение является экземпляром Module Namespace Object.
1 2 3 | |
util.types.isNativeError(value)¶
Возвращает true, если значение было возвращено конструктором встроенного типа Error.
1 2 3 | |
Подклассы собственных типов ошибок также являются собственными ошибками:
1 2 | |
Значение, являющееся stanceof класса нативной ошибки, не эквивалентно тому, что isNativeError() возвращает true для этого значения. isNativeError() возвращает true для ошибок, которые приходят из другой сферы, в то время как instanceof Error возвращает false для этих ошибок:
1 2 3 4 5 | |
И наоборот, isNativeError() возвращает false для всех объектов, которые не были возвращены конструктором родной ошибки. Это включает значения, которые являются instanceof родных ошибок:
1 2 3 | |
util.types.isNumberObject(value)¶
Возвращает true, если значение является числовым объектом, например, созданным с помощью new Number().
1 2 | |
util.types.isPromise(value)¶
Возвращает true, если значение является встроенным Promise.
1 | |
util.types.isProxy(value)¶
Возвращает true, если значение является экземпляром Proxy.
1 2 3 4 | |
util.types.isRegExp(value)¶
Возвращает true, если значение является объектом регулярного выражения.
1 2 | |
util.types.isSet(value)¶
Возвращает true, если значение является экземпляром встроенного Set.
1 | |
util.types.isSetIterator(value)¶
Возвращает true, если значение является итератором, возвращаемым для встроенного экземпляра Set.
1 2 3 4 5 | |
util.types.isSharedArrayBuffer(value)¶
Возвращает true, если значение является экземпляром встроенного SharedArrayBuffer. Это не включает экземпляры ArrayBuffer. Обычно желательно проверять оба варианта; см. об этом в util.types.isAnyArrayBuffer().
1 2 | |
util.types.isStringObject(value)¶
Возвращает true, если значение является строковым объектом, например, созданным с помощью new String().
1 2 | |
util.types.isSymbolObject(value)¶
Возвращает true, если значение является объектом символа, созданным вызовом Object() на примитиве Symbol.
1 2 3 | |
util.types.isTypedArray(value)¶
Возвращает true, если значение является экземпляром встроенного TypedArray.
1 2 3 | |
См. также ArrayBuffer.isView().
util.types.isUint8Array(value)¶
Возвращает true, если значение является экземпляром встроенного Uint8Array.
1 2 3 | |
util.types.isUint8ClampedArray(value)¶
Возвращает true, если значение является встроенным экземпляром Uint8ClampedArray.
1 2 3 | |
util.types.isUint16Array(value)¶
Возвращает true, если значение является экземпляром встроенного Uint16Array.
1 2 3 | |
util.types.isUint32Array(value)¶
Возвращает true, если значение является экземпляром встроенного Uint32Array.
1 2 3 | |
util.types.isWeakMap(value)¶
Возвращает true, если значение является экземпляром встроенной WeakMap.
1 | |
util.types.isWeakSet(value)¶
Возвращает true, если значение является экземпляром встроенного WeakSet.
1 | |
util.types.isWebAssemblyCompiledModule(value).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте value instanceof WebAssembly.Module вместо этого.
Возвращает true, если значение является экземпляром встроенного WebAssembly.Module.
1 2 | |
Устаревшие API¶
Следующие API являются устаревшими и больше не должны использоваться. Существующие приложения и модули должны быть обновлены для поиска альтернативных подходов.
util._extend(target, source).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте Object.assign().
Метод util._extend() никогда не предназначался для использования вне внутренних модулей Node.js. Однако сообщество все равно нашло и использовало его.
Он устарел и не должен использоваться в новом коде. JavaScript поставляется с очень похожей встроенной функциональностью через Object.assign().
util.isArray(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте Array.isArray().
Псевдоним для Array.isArray().
Возвращает true, если данный объект является массивом. В противном случае возвращается false.
1 2 3 4 5 6 7 8 | |
util.isBoolean(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте typeof value === 'boolean'.
Возвращает true, если данный объект является булевым. В противном случае возвращается false.
1 2 3 4 5 6 7 8 | |
util.isBuffer(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте Buffer.isBuffer() вместо этого.
Возвращает true, если данный объект является буфером. В противном случае возвращается false.
1 2 3 4 5 6 7 8 | |
util.isDate(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте util.types.isDate() вместо этого.
Возвращает true, если данный объект является датой. В противном случае возвращает false.
1 2 3 4 5 6 7 8 | |
util.isError(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте util.types.isNativeError() вместо этого.
Возвращает true, если данный объект является ошибкой. В противном случае возвращается false.
1 2 3 4 5 6 7 8 9 10 11 | |
Этот метод полагается на поведение Object.prototype.toString(). Возможно получение неправильного результата, когда аргумент object манипулирует @@toStringTag.
1 2 3 4 5 6 7 8 | |
util.isFunction(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте typeof value === 'function'.
Возвращает true, если данный объект является функцией. В противном случае возвращает false.
1 2 3 4 5 6 7 8 9 10 11 | |
util.isNull(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте value === null.
Возвращает true, если данный объект строго null. В противном случае возвращается false.
1 2 3 4 5 6 7 8 | |
util.isNullOrUndefined(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте value === undefined || value === null.
Возвращает true, если данный объект является null или undefined. В противном случае возвращается false.
1 2 3 4 5 6 7 8 | |
util.isNumber(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте typeof value === 'number'.
Возвращает true, если данный объект является число. В противном случае возвращает false.
1 2 3 4 5 6 7 8 9 10 | |
util.isObject(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте value !== null && typeof value === 'object' вместо этого.
Возвращает true, если данный object является строго Object и не Function (даже если функции являются объектами в JavaScript). В противном случае возвращается false.
1 2 3 4 5 6 7 8 9 10 | |
util.isPrimitive(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте (typeof value !== 'object' && typeof value !== 'function') || value === null вместо этого.
Возвращает true, если данный object является примитивным типом. В противном случае возвращает false.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
util.isRegExp(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Утратил актуальность
Возвращает true, если данный объект является RegExp. В противном случае возвращается false.
1 2 3 4 5 6 7 8 | |
util.isString(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте typeof value === 'string'.
Возвращает true, если данный объект является строкой. В противном случае возвращает false.
1 2 3 4 5 6 7 8 9 10 | |
util.isSymbol(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте typeof value === 'symbol'.
Возвращает true, если данный объект является символом. В противном случае возвращается false.
1 2 3 4 5 6 7 8 | |
util.isUndefined(object).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте value === undefined.
Возвращает true, если данный объект является неопределенным. В противном случае возвращает false.
1 2 3 4 5 6 7 8 9 | |
util.log(string).¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте сторонний модуль.
string<string>
Метод util.log() печатает заданную строку в stdout с включенной меткой времени.
1 2 3 | |