Disable JavaScript support
If you prefer to use JavaScript language features supported by other JavaScript language tools such as Flow, you can disable VS Code’s built-in JavaScript support. You do this by disabling the built-in TypeScript language extension TypeScript and JavaScript Language Features (vscode.typescript-language-features) which also provides the JavaScript language support.
To disable JavaScript/TypeScript support, go to the Extensions view (⇧⌘X (Windows, Linux Ctrl+Shift+X)) and filter on built-in extensions (Show Built-in Extensions in the … More Actions dropdown), then type ‘typescript’. Select the TypeScript and JavaScript Language Features extension and press the Disable button. VS Code built-in extensions cannot be uninstalled, only disabled, and can be re-enabled at any time.
Setting up VS Code for Java development
Coding Pack for Java
To help you set up quickly, you can install the Coding Pack for Java, which includes VS Code, the Java Development Kit (JDK), and essential Java extensions. The Coding Pack can be used as a clean installation, or to update or repair an existing development environment.
Installing extensions
If you are an existing VS Code user, you can also add Java support by installing the Extension Pack for Java, which includes these extensions:
- Language Support for Java by Red Hat
- Debugger for Java
- Test Runner for Java
- Maven for Java
- Project Manager for Java
- Visual Studio IntelliCode
The Extension Pack for Java provides a Quick Start guide and tips for code editing and debugging. It also has a FAQ that answers some frequently asked questions. Use the command Java: Tips for Beginners from the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) to launch the guide.
You can also install extensions separately. The Extensions Guide is provided to help you. You can launch the guide with the Java: Extensions Guide command.
For this tutorial, the only required extensions are:
- Language Support for Java by Red Hat
- Debugger for Java
5 ответов
Лучший ответ
Этого можно добиться двумя способами:
-
Просто добавьте и дайте свой . и начать отладки .
Например, если ваш — . создать папку называется и внутри этой папки создается , структура выглядит следующим образом:
и укажите путь, как показано ниже в :
-
Второй вариант — создать и указать свой файл в качестве точки входа. когда вы нажимаете F5 , будет считать этот файл отправной точкой.
Вы можете создать вручную или создать его с помощью . Это задаст вам кучу вопросов, а затем напишет для вас.
9
kgangadhar
12 Ноя 2017 в 15:20
Самый простой способ для меня … Щелкните правой кнопкой мыши файл в проводнике файлов VS. Нажмите «Открыть в Терминале». Тогда в терминале типа
1
Rob McFeely
23 Сен 2019 в 10:47
Вы можете запустить свой текущий файл в среде Node, не создавая launch.json.
Открыв файл, который вы хотите отладить, перейдите на панель отладчика, нажмите зеленую стрелку и выберите Node в качестве среды.
1
samlandfried
1 Фев 2019 в 04:20
Чтобы избежать путаницы, параметры отладки зависят от того, как настроено ваше рабочее пространство:
-
Если вы не создали файл , вы увидите следующие параметры на панели отладки. Нажатие отладит текущий активный файл.
-
Если у вас есть файл , вы все равно увидите то же представление, что показано выше; однако VSCode сначала попытается отладить имя файла, которое вы указали в атрибуте вашего . Если он не найдет этот файл, он будет отлаживать текущий активный файл. Так, например, если мой показывает как мой файл, то VSCode всегда будет запускать этот файл в отладчике, если он сможет найти его вместо вашего текущего активного файла.
-
Наконец, вы можете быть более явным, добавив конфигурации в . Когда вы сделаете это, вы можете выбрать файл для отладки из выпадающего списка. В моей среде я добавляю опцию, чтобы иметь возможность запускать текущий активный файл (первая запись в JSON ниже), а также любые другие файлы, к которым я хочу быстро получить доступ (вторая запись в JSON ниже). Теперь выпадающий список покажет эти варианты на выбор.
Для получения дополнительной информации обратитесь к отладке в коде Visual Studio.
1
kgangadhar
6 Май 2020 в 01:18
Чтобы запустить (отладить) открытый / активный * .js-файл, в вашем файле должна быть указана следующая конфигурация:
6
kgangadhar
6 Май 2020 в 01:15
Поддержка синтаксиса JSX
JavaScript в Visual Studio 2017 обладает обширной поддержкой синтаксиса JSX. JSX — это набор синтаксиса, позволяющий использовать HTML-теги в файлах JavaScript.
На приведенном ниже рисунке показан определенный в файле TypeScript компонент React, который затем используется из файла с применением IntelliSense для завершений и документации в выражениях JSX.
TypeScript здесь не требуется, просто этот конкретный пример содержит некоторый объем кода TypeScript.
Observação
Для преобразования синтаксиса JSX вызовы React нужно добавить параметр в в файле .
Файл JavaScript, созданный в «./out/app.js» при сборке, будет содержать этот код:
Breakpoints
Breakpoints can be toggled by clicking on the editor margin or using F9 on the current line. Finer breakpoint control (enable/disable/reapply) can be done in the Run view’s BREAKPOINTS section.
- Breakpoints in the editor margin are normally shown as red filled circles.
- Disabled breakpoints have a filled gray circle.
- When a debugging session starts, breakpoints that cannot be registered with the debugger change to a gray hollow circle. The same might happen if the source is edited while a debug session without live-edit support is running.
If the debugger supports breaking on different kinds of errors or exceptions, those will also be available in the BREAKPOINTS view.
The Reapply All Breakpoints command sets all breakpoints again to their original location. This is helpful if your debug environment is «lazy» and «misplaces» breakpoints in source code that has not yet been executed.
Optionally, breakpoints can be shown in the editor’s overview ruler by enabling the setting :
Next steps
To learn about VS Code’s Node.js debugging support, take a look at:
- Node.js — Describes the Node.js debugger, which is included in VS Code.
- TypeScript — The Node.js debugger also supports TypeScript debugging.
To see tutorials on the basics of Node.js debugging, check out these videos:
- Intro Video — Debugging — Showcases the basics of debugging.
- Getting started with Node.js debugging — Shows how to attach a debugger to a running Node.js process.
To learn about debugging support for other programming languages via VS Code extensions:
- C++
- Python
- Java
To learn about VS Code’s task running support, go to:
Tasks — Describes how to run tasks with Gulp, Grunt, and Jake and how to show errors and warnings.
To write your own debugger extension, visit:
Debugger Extension — Uses a mock sample to illustrate the steps required to create a VS Code debug extension.
Creating a source code file
Create a folder for your Java program and open the folder with VS Code. Then in VS Code, create a new file and save it with the name . When you open that file, the Java Language Server automatically starts loading, and you should see a loading icon on the right side of the Status Bar. After it finishes loading, you will see a thumbs-up icon.
VS Code will also try to figure out the correct package for the new type and fill the new file from a template. See .
You can also create a Java project using the Java: Create Java Project command. Bring up the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) and then type to search for this command. After selecting the command, you will be prompted for the location and name of the project. You can also choose your build tool from this command.
Visual Studio Code also supports more complex Java projects — see Project Management.
Отладка кода
Для того чтобы запустить код в VS Code, нам нужно воспользоваться одним из расширений. Например, для JavaScript подойдет Debugger for Chrome. Узнать, какое расширение необходимо для конкретного языка, можно через «Выполнить» -> «Установить дополнительные отладчики…».
В результате в левой части окна будет отображен список доступных плагинов – найдите в нем подходящий для вас и следуйте инструкции.
После того как нужный плагин будет установлен, можно запускать отладку кода. Для этого достаточно открыть пункт «Выполнить» и нажать на кнопку «Запустить отладку». Также это можно сделать с помощью клавиши «F5».
С помощью плагинов мы можем отладить код, написанный на любом языке программирования.
Поддержка ECMAScript 2015 (ES6) и более поздних версий
Visual Studio теперь поддерживает синтаксис обновлений языка ECMAScript, таких как ECMAScript 2015/2016.
Что такое ECMAScript 2015?
Язык программирования JavaScript по-прежнему развивается, и за его обновления отвечает комитет TC39.
ECMAScript 2015 — обновление языка JavaScript, которое предоставляет полезные изменения синтаксиса и функций. Подробное описание функций ES6 см. на справочном сайте.
Наряду с ECMAScript 2015 среда Visual Studio также поддерживает ECMAScript 2016 и будет поддерживать будущие версии ECMAScript по мере их выпуска. Чтобы следить за работой комитета TC39 и последними изменениями в ECMAScript, заходите на их страницу в GitHub.
Транскомпиляция в код на языке JavaScript
При использовании JavaScript часто возникает следующая проблема: вы хотите применять новейшие функции языка ES6+ для более эффективной работы, но среды выполнения (или часто браузеры) пока еще их не поддерживают. Это означает, что вам нужно либо следить за тем, какие функции поддерживаются в разных браузерах (что может быть очень утомительно), либо преобразовывать код ES6+ в версию, поддерживаемую вашими целевыми средами выполнения (обычно это версия ES5). Преобразование кода до версии, воспринимаемой средой выполнения, часто называется транскомпиляцией.
Одна из ключевых возможностей TypeScript — возможность транскомпиляции кода ES6+ в код ES5 или ES3. Она обеспечивает максимально эффективное создание кода, который при этом будет запускаться на любой платформе. Так как JavaScript в Visual Studio 2017 использует ту же языковую службу, что и TypeScript, в JavaScript также можно применять транскомпиляцию ES6+ в ES5.
Перед настройкой транскомпиляции нужно разобраться в доступных параметрах конфигурации.
TypeScript настраивается с помощью файла .
При отсутствии такого файла используются значения по умолчанию.
Для обеспечения совместимости эти значения по умолчанию отличаются, если присутствуют только файлы JavaScript (и, возможно, файлы ).
Для компиляции файлов JavaScript нужно добавить файл , а затем явным образом задать некоторые из этих параметров.
Ниже приведены обязательные параметры для файла tsconfig.
- . это значение должно быть равно для распознавания файлов JavaScript. Значение по умолчанию — , так как TypeScript компилируется в код JavaScript, и компилятор не должен включать только что скомпилированные файлы.
- . в качестве этого значения нужно задать расположение, не включенное в проект, чтобы выдаваемые файлы JavaScript не обнаруживались и не включались в проект (см. ).
- . при использовании модулей этот параметр указывает компилятору, какой формат модулей должен использовать создаваемый код (например, для узла или средств увязки в пакеты, таких как Browserify).
-
. этот параметр указывает папки, которые не нужно включать в проект.
В него следует добавить выходное расположение, а также не относящиеся к проекту папки, такие как или . - . этот параметр включает автоматическое обнаружение и скачивание файлов определений, как описано выше.
- . этот параметр указывает компилятору, следует ли повторять компиляцию при каждом сохранении файла исходного кода в Visual Studio.
- . этот набор параметров управляет автоматическим получением типа (подробнее см. в ).
Чтобы преобразовать файлы JavaScript в модули CommonJS и поместить их в папку , можно использовать следующий файл .
Предположим, параметры заданы и существовал исходный файл (), который включал несколько функций языка ECMAScript 2015, как показано ниже:
Затем файл будет выдан в , нацеленный на ECMAScript 5 (по умолчанию), что выглядит примерно следующим образом:
Основы отладки
Начнем с основ. Идея отладки заключается в том, что внутри программного кода можно устанавливать так называемые точки останова (breakpoints) для того, чтобы остановить выполнение программы в определенном месте.
Это дает вам, как разработчику, возможность взглянуть на текущее состояние приложения и проверить, например, значения переменных в нём. Вы даже можете сделать еще больше и отследить любые переменные по своему выбору, чтобы всякий раз, когда приложение останавливается, вы могли проверить значения этих переменных.
После установки точки останова (breakpoint) в коде, как правило, есть несколько вариантов дальнейших действий:
- продолжить выполнение программы
- пошагово пройтись по всем этапам выполнения программы — строка за строкой
- выйти из текущей функции, в которой вы находитесь
- перейти к выполнению следующей функции
У вас также будет доступ к просмотру стека вызовов (call stack). Другими словами, поскольку в программе функции могут вызывать на исполнение другие функции, то можно просмотреть историю вызовов этих функций.
3: Панель отладки VS Code
Обратите внимание на боковую панель редактора (по умолчанию она находится слева). Чтобы открыть панель отладки, найдите в этой панели кнопку с перечеркнутым жуком и нажмите ее
Здесь вы увидите четыре разных раздела: variables, watch, call stack и breakpoints.
В верхней части панели вы увидите зеленую кнопку воспроизведения и выпадающий список – на нем будет надпись No Configurations, если вы еще не создали конфигурацию отладки. Соответственно, если ранее вы создали конфигурацию, вы увидите ее в этом списке.
VS Code хранит конфигурации отладки в файле launch.json внутри папки .vscode. VS Code помогает создать не только эту папку и файл, но в том числе и предопределенные конфигурации. Давайте попробуем создать нашу первую конфигурацию.
Итак, чтобы создать исходный файл launch.json, кликните на выпадающий список No Configurations и выберите Add Configuration. На экране появится всплывающее окно, которое можно проигнорировать. Приступим же к созданию нашей первой конфигурации.
Ключевыми компонентами конфигурации отладки являются:
- name – имя вашей конфигурации, отображаемое в выпадающем списке.
- request – тип действия, которое вы хотите выполнить.
- type – тип отладчика конфигурации. Это может быть Node, Chrome, PHP и т.д.
Кроме того, VS Code поможет определить другие свойства через IntelliSense.
Great code editing
Close the browser and from a terminal in the folder, stop the Node.js server by pressing CTRL+C.
Now launch VS Code:
The Node.js and Express documentation does a great job explaining how to build rich applications using the platform and framework. Visual Studio Code will make you more productive in developing these types of applications by providing great code editing and navigation experiences.
Open the file and hover over the Node.js global object . Notice how VS Code understands that is a string. Even more interesting, you can get full IntelliSense against the Node.js framework. For example, you can require and get full IntelliSense against the class as you type in Visual Studio Code.
VS Code uses TypeScript type declaration (typings) files (for example ) to provide metadata to VS Code about the JavaScript based frameworks you are consuming in your application. Type declaration files are written in TypeScript so they can express the data types of parameters and functions, allowing VS Code to provide a rich IntelliSense experience. Thanks to a feature called , you do not have to worry about downloading these type declaration files, VS Code will install them automatically for you.
You can also write code that references modules in other files. For example, in we require the module, which exports an class. If you bring up IntelliSense on , you can see the shape of the class.
Отладка JavaScript в динамических файлах с помощью Razor (ASP.NET)
Начиная с Visual Studio 2019, Visual Studio обеспечивает отладку только для Chrome и Microsoft Edge (Chromium).
Visual Studio поддерживает отладку только для браузеров Chrome и Internet Explorer.
Однако, вы не сможете автоматически использовать точки останова в файлах, созданных с синтаксисом Razor (cshtml, vbhtml). Для отладки файлов такого типа вы можете применить два следующих подхода.
-
Поместите инструкцию в той строке, где нужно прервать выполнение. Эта инструкция прерывает выполнение динамического скрипта и начинает отладку сразу же при его создании.
-
Загрузите страницу и откройте динамический документ в Visual Studio. Чтобы воспользоваться этим методом, нужно открыть динамический файл в процессе отладки, задать в нем точку останова и обновить страницу. В зависимости от выбранного браузера (Chrome или Internet Explorer) вы сможете найти этот файл с помощью следующих действий.
Для Chrome откройте пункты меню Обозреватель решений > Документы скриптов > .
Observação
Если вы используете Chrome, может появиться сообщение: Источник недоступен между тегами <script> . Это нормально, просто продолжайте отладку.
Для Microsoft Edge (Chromium) используйте ту же процедуру, что и для Chrome.
Для Internet Explorer откройте пункты меню Обозреватель решений > Документы скриптов > Windows Internet Explorer > .
Дополнительные сведения см. в руководстве по отладке проектов ASP.NET в браузере Google Chrome на стороне клиента.
Поддержка ECMAScript 2015 (ES6) и более поздних версий
Visual Studio теперь поддерживает синтаксис обновлений языка ECMAScript, таких как ECMAScript 2015/2016.
Что такое ECMAScript 2015?
Язык программирования JavaScript по-прежнему развивается, и за его обновления отвечает комитет TC39.
ECMAScript 2015 — обновление языка JavaScript, которое предоставляет полезные изменения синтаксиса и функций. Подробное описание функций ES6 см. на справочном сайте.
Наряду с ECMAScript 2015 среда Visual Studio также поддерживает ECMAScript 2016 и будет поддерживать будущие версии ECMAScript по мере их выпуска. Чтобы следить за работой комитета TC39 и последними изменениями в ECMAScript, заходите на их страницу в GitHub.
Транскомпиляция в код на языке JavaScript
При использовании JavaScript часто возникает следующая проблема: вы хотите применять новейшие функции языка ES6+ для более эффективной работы, но среды выполнения (или часто браузеры) пока еще их не поддерживают. Это означает, что вам нужно либо следить за тем, какие функции поддерживаются в разных браузерах (что может быть очень утомительно), либо преобразовывать код ES6+ в версию, поддерживаемую вашими целевыми средами выполнения (обычно это версия ES5). Преобразование кода до версии, воспринимаемой средой выполнения, часто называется транскомпиляцией.
Одна из ключевых возможностей TypeScript — возможность транскомпиляции кода ES6+ в код ES5 или ES3. Она обеспечивает максимально эффективное создание кода, который при этом будет запускаться на любой платформе. Так как JavaScript в Visual Studio 2017 использует ту же языковую службу, что и TypeScript, в JavaScript также можно применять транскомпиляцию ES6+ в ES5.
Перед настройкой транскомпиляции нужно разобраться в доступных параметрах конфигурации.
TypeScript настраивается с помощью файла .
При отсутствии такого файла используются значения по умолчанию.
Для обеспечения совместимости эти значения по умолчанию отличаются, если присутствуют только файлы JavaScript (и, возможно, файлы ).
Для компиляции файлов JavaScript нужно добавить файл , а затем явным образом задать некоторые из этих параметров.
Ниже приведены обязательные параметры для файла tsconfig.
- . это значение должно быть равно для распознавания файлов JavaScript. Значение по умолчанию — , так как TypeScript компилируется в код JavaScript, и компилятор не должен включать только что скомпилированные файлы.
- . в качестве этого значения нужно задать расположение, не включенное в проект, чтобы выдаваемые файлы JavaScript не обнаруживались и не включались в проект (см. ).
- . при использовании модулей этот параметр указывает компилятору, какой формат модулей должен использовать создаваемый код (например, для узла или средств увязки в пакеты, таких как Browserify).
-
. этот параметр указывает папки, которые не нужно включать в проект.
В него следует добавить выходное расположение, а также не относящиеся к проекту папки, такие как или . - . этот параметр включает автоматическое обнаружение и скачивание файлов определений, как описано выше.
- . этот параметр указывает компилятору, следует ли повторять компиляцию при каждом сохранении файла исходного кода в Visual Studio.
- . этот набор параметров управляет автоматическим получением типа (подробнее см. в ).
Чтобы преобразовать файлы JavaScript в модули CommonJS и поместить их в папку , можно использовать следующий файл .
Предположим, параметры заданы и существовал исходный файл (), который включал несколько функций языка ECMAScript 2015, как показано ниже:
Затем файл будет выдан в , нацеленный на ECMAScript 5 (по умолчанию), что выглядит примерно следующим образом:
Launch.json attributes
There are many attributes to help support different debuggers and debugging scenarios. As mentioned above, you can use IntelliSense (⌃Space (Windows, Linux Ctrl+Space)) to see the list of available attributes once you have specified a value for the attribute.
The following attributes are mandatory for every launch configuration:
- — the type of debugger to use for this launch configuration. Every installed debug extension introduces a type: for the built-in Node debugger, for example, or and for the PHP and Go extensions.
- — the request type of this launch configuration. Currently, and are supported.
- — the reader-friendly name to appear in the Debug launch configuration dropdown.
Here are some optional attributes available to all launch configurations:
- — using the , , and attributes in the object, you can sort, group, and hide configurations and compounds in the Debug configuration dropdown and in the Debug quick pick.
- — to launch a task before the start of a debug session, set this attribute to the label of a task specified in tasks.json (in the workspace’s folder). Or, this can be set to to use your default build task.
- — to launch a task at the very end of a debug session, set this attribute to the name of a task specified in tasks.json (in the workspace’s folder).
- — this attribute controls the visibility of the Debug Console panel during a debugging session.
- — for debug extension authors only: this attribute allows you to connect to a specified port instead of launching the debug adapter.
- — if you want to open a URL in a web browser whenever the program under debugging outputs a specific message to the debug console or integrated terminal. For details see section below.
Many debuggers support some of the following attributes:
- — executable or file to run when launching the debugger
- — arguments passed to the program to debug
- — environment variables (the value can be used to «undefine» a variable)
- — path to dotenv file with environment variables
- — current working directory for finding dependencies and other files
- — port when attaching to a running process
- — break immediately when the program launches
- — what kind of console to use, for example, , , or
Интерактивная отладка и режим приостановки выполнения
Можно использовать точки останова и пошаговое выполнение кода при использовании таких средств отладки JavaScript, как окно консоли JavaScript. Если программа, которая выполняется в отладчике, оказывается в точке останова, отладчик временно приостанавливает выполнение программы. Если выполнение приостановлено, программа переключается из режима выполнения в режим приостановки выполнения. Выполнение можно возобновить в любой момент.
Если программа находится в режиме приостановки выполнения, можно использовать окно консоли JavaScript для выполнения скриптов и команд, которые являются допустимыми в текущем контексте выполнения скрипта. При выполнении этой процедуры вы будете использовать исправленную версию приложения , созданную ранее, чтобы продемонстрировать использование режима приостановки выполнения.
Настройка точки останова и отладка приложения
-
В файле default.html приложения , созданного ранее, откройте контекстное меню функции , а затем выберите Точка останова > Вставить точку останова.
-
На панели инструментов Отладка в раскрывающемся списке рядом с кнопкой Начать отладку выберите Локальный компьютер .
-
Выберите Отладка > Начать отладку или нажмите клавишу F5.
Приложение входит в режим приостановки выполнения, когда выполнение достигает функции и текущая строка выполнения программы выделяется желтым.
Можно изменить значения переменных, чтобы немедленно изменить состояние программы, не завершая текущего сеанса отладки.
-
Введите в командной строке и нажмите клавишу ВВОД. В окне консоли отображается визуализатор для данной функции.
-
Выберите функцию в окне консоли, чтобы отобразить ее реализацию.
На следующем рисунке показано окно консоли на этом этапе.
-
Скопируйте одну строку функции из окна вывода в строку ввода и измените значение индекса на 3:
-
Нажмите клавишу ВВОД, чтобы выполнить эту строку кода.
Если требуется пошаговое выполнение кода по одной строке, нажмите клавишу F11 или нажмите клавишу F5, чтобы продолжить выполнение программы.
-
Нажмите клавишу F5, чтобы продолжить выполнение программы. Появляется приложение , и теперь на всех четырех страницах отображается одно из изображений, не заданных по умолчанию.
Чтобы вернуться в Visual Studio, нажмите клавишу F12 или сочетание клавиш Alt + Tab.
Предварительные условия
Для работы с этим руководством требуется следующее:
-
Visual Studio с установленной рабочей нагрузкой «Разработка Node.js».
Если вы еще не установили Visual Studio:
-
Перейдите на страницу загрузки Visual Studio, чтобы установить Visual Studio бесплатно.
-
В Visual Studio Installer выберите рабочую нагрузку Разработка Node.js и щелкните Установить.
Если вы уже установили Visual Studio:
-
В Visual Studio выберите Средства > Получить средства и компоненты.
-
В Visual Studio Installer выберите рабочую нагрузку Разработка Node.js и щелкните Изменить, чтобы скачать и установить рабочую нагрузку.
-
-
Установленная среда выполнения Node.js:
Если у вас не установлена среда выполнения Node.js, установите версию LTS с веб-сайта Node.js. Версия LTS имеет наилучшую совместимость с другими платформами и библиотеками.
Средства Node.js в рабочей нагрузке Visual Studio Node.js поддерживают как 32-разрядные, так и 64-разрядные версии архитектуры Node.js. Для Visual Studio нужна только одна версия, а установщик Node.js не может работать с двумя версиями сразу.
Обычно Visual Studio обнаруживает установленную среду выполнения Node.js автоматически. В противном случае настройте свой проект, чтобы он ссылался на установленную среду выполнения. Для этого сделайте следующее:
-
После создания проекта щелкните правой кнопкой мыши узел проекта и выберите Панель свойств.
-
На панели Свойства задайте путь Node.exe для ссылки на глобальную или локальную установку Node.js. Вы можете указать путь к локальному интерпретатору в каждом из своих проектов Node.js.
-
Этот учебник был протестирован с Node.js 14.17.5.
Этот учебник был протестирован с Node.js 8.10.0.