Установка Node.js в Windows
Если вы не занимались разработкой с помощью Node.js и хотите быстро начать работу, установите Node.js непосредственно в Windows, выполнив указанные ниже действия.
Если вы используете Node.js профессионально и вам нужно оптимизировать скорость и производительность, обеспечить совместимость системных вызовов, выполнять контейнеры Docker, которые используют рабочие области Linux, и не нужно использовать скрипты сборки Linux и Windows или вы просто предпочитаете использовать командную строку Bash, установите Node.js в подсистеме Windows для Linux (точнее, в WSL 2).
Установка nvm-windows, Node.js и npm
Наряду с возможностью выбора системы для разработки (Windows или WSL) при установке Node.js доступны и другие возможности. Мы рекомендуем использовать диспетчер версий, так как версии меняются достаточно быстро. Вероятно, вам придется переключаться между несколькими версиями Node.js в зависимости от потребностей для различных проектов, над которыми вы работаете. Диспетчер версий Node Version Manager, чаще называемый nvm, является наиболее популярным средством установки нескольких версий Node.js, но он доступен только для Mac и Linux и не поддерживается в Windows. Вместо этого мы рекомендуем установить средство nvm-windows, а затем с его помощью установить Node.js и диспетчер Node Package Manager (npm). Существуют также альтернативные диспетчеры версий, которые описаны в следующем разделе.
Рекомендуем всегда удалять любые имеющиеся установки Node.js или npm из операционной системы перед установкой диспетчера версий, так как эти установки могут создавать необычные и запутанные конфликты. Сюда относится удаление всех существующих каталогов установки Node.js (например, C:\Program Files\nodejs), которые могут остаться. Созданная символьная ссылка NVM не будет перезаписывать существующий (даже пустой) каталог установки. Справку по полному удалению предыдущих установок см. здесь.
NVM предназначен для установки на пользователя и вызова для каждой оболочки. Он не предназначен для общих полей разработчика или серверов сборки с несколькими агентами сборки. NVM работает с помощью символьной ссылки. Использование nvm в общих сценариях создает проблему, так как эта ссылка указывает на папку данных приложения пользователя, поэтому если пользователь x выполняется nvm use lts , ссылка будет указывать узел для всего поля в папку данных приложения. Если пользователь y запускает узел или npm, он будет направлен на запуск файлов в учетной записи пользователя x и в случае, если npm -g они будут изменять файлы x, которые по умолчанию не разрешены. Поэтому nvm назначается только для одного поля разработчика. Это также относится к серверам сборки. Если два агента сборки находятся на одной виртуальной машине или коробке, они могут конкурировать и вызывать нечетное поведение в сборках.
- Следуйте инструкциям по установке, приведенным в репозитории windows-nvm. Мы рекомендуем использовать установщик, но если вы лучше понимаете свои потребности, возможно, целесообразным будет выполнить установку вручную. Установщик перенаправит вас на страницу выпусков с информацией о последней версии.
- Скачайте последний выпуск файла nvm-setup.zip.
- После скачивания откройте ZIP-файл, а затем запустите файл nvm-setup.exe.
- Мастер установки Setup-NVM-for-Windows поможет выполнить все этапы установки, в том числе выбрать каталог, в котором будут установлены репозиторий nvm-windows и Node.js.

- Установка завершится. Откройте PowerShell (рекомендуется открыть с повышенными правами администратора) и попробуйте использовать windows-nvm, чтобы указать, какие версии узла сейчас установлены (на этом этапе они не указаны): nvm ls

- Установите текущий выпуск Node.js (в нем вы сможете протестировать новейшие улучшенные возможности, но вероятность возникновения проблем при этом будет больше, чем при использовании версии LTS) с помощью команды nvm install latest .
- Установите последний стабильный выпуск LTS Node.js (рекомендуется). Для этого сначала выполните поиск номера текущей версии LTS с помощью команды nvm list available , а затем установите версию LTS по номеру с помощью команды nvm install (замените номером, например: nvm install 12.14.0 ).

- Вызовите список установленных версий Node, выполнив команду nvm ls . Теперь в нем должны отображаться две недавно установленные версии.

- После установки требуемых версий Node.js выберите нужную версию, введя nvm use (замените нужным номером, например nvm use 12.9.0 ).
- Чтобы изменить версию Node.js на ту, которую вы хотите использовать для проекта, создайте каталог проекта с помощью команды mkdir NodeTest и укажите каталог, выполнив команду cd NodeTest . Затем введите nvm use , заменив номером версии, который вы хотите использовать (т. е. версии 10.16.3).
- Проверьте, какая версия npm установлена, с помощью npm —version . Этот номер версии автоматически изменится на номер той версии npm, которая связана с вашей текущей версией Node.js.
Альтернативные диспетчеры версий
Несмотря на то что windows-nvm сейчас является самым популярным менеджером версий для Node, есть несколько альтернативных вариантов:
- nvs (Node Version Switcher) — это кроссплатформенный вариант nvm с возможностью интеграции с VS Code.
- Volta — это новый диспетчер версий, созданный командой LinkedIn. Заявлено, что он отличается увеличенной скоростью и межплатформенной поддержкой.
Чтобы установить Volta в качестве диспетчера версий (вместо windows-nvm), перейдите в раздел Установка Windows руководства Начало работы, затем скачайте и запустите установщик Windows, следуя инструкциям.
Перед установкой Volta необходимо убедиться, что на компьютере с Windows включен режим разработчика.
Дополнительные сведения об использовании Volta для установки нескольких версий Node.js в Windows см. в документации по работе с Volta.
Установка Visual Studio Code
Рекомендуется установить Visual Studio Code для разработки с помощью Node.js в Windows. Дополнительные сведения см . в руководстве Node.js в Visual Studio Code.
Альтернативные редакторы кода
Если вы предпочитаете использовать редактор кода или интегрированную среду разработки, отличные от Visual Studio Code, для среды разработки Node.js также подходят следующие варианты:
Установка GIT
Если вы планируете работать совместно с другими пользователями или размещать проект на сайте с открытым исходным кодом (например, GitHub), примите во внимание, что VS Code поддерживает управление версиями с помощью Git. Вкладка системы управления версиями в VS Code отслеживает все изменения и содержит общие команды Git (добавление, фиксация, принудительная отправка, извлечение) прямо в пользовательском интерфейсе. Сначала необходимо установить Git для включения панели управления версиями.
- Скачайте и установите Git для Windows с веб-сайта git-scm.
- В комплект входит мастер установки, который задает вам ряд вопросов о параметрах установки Git. Рекомендуется использовать все параметры по умолчанию, если у вас нет конкретной причины изменить какой-либо из них.
- Если вы никогда не использовали Git, обратитесь к руководствам по GitHub. Они помогут вам приступить к работе.
- Мы рекомендуем добавлять GITIGNORE-файл в проекты Node. На сайте GitHub вы можете найти GITIGNORE-шаблон по умолчанию для Node.js.
Использование подсистемы Windows для Linux в рабочей среде
Использование Node.js напрямую в Windows отлично подходит для обучения и экспериментов с возможностями. Когда вы будете готовы создавать готовые к работе веб-приложения, которые обычно развертываются на сервере под управлением Linux, мы рекомендуем использовать подсистему Windows для Linux версии 2 (WSL 2) для разработки веб-приложений Node.js. Многие пакеты и платформы Node.js создаются с помощью среды *nix, а большинство приложений Node.js развертываются в Linux, поэтому разработка в WSL обеспечивает согласованность между средой разработки и рабочей средой. Дополнительные сведения о настройке среды разработки WSL см. в статье Настройка среды разработки Node.js в подсистеме Windows для Linux версии 2.
В достаточно редкой ситуации, когда вам требуется разместить приложение Node.js на сервере Windows, лучше использовать обратный прокси-сервер. Это можно сделать двумя способами: 1) с помощью iisnode или напрямую. Эти ресурсы не поддерживаются. Мы рекомендуем использовать серверы Linux для размещения приложений Node.js.
3. Установка и запуск

Ну что, время завязывать со всякой нудной теорией и переходить к практике. Сейчас мы посмотрим как установить Node.JS, как на нем выполнять скрипты и немножко залезем в документацию. Для этого я первым делом зайду на сайт http://nodejs.org. Здесь есть такая большая кнопка, которая, как правило, позволяет скачать пакет наиболее подходящий для вашей ОС. Вначале посмотрим, что с Mac OS. С Mac OS все просто, мы жмем на кнопку, скачиваем «node-v4.4.7.pkg», запускаем его, все подтверждаем, все очень очевидно, мы не будем это рассматривать, ошибиться тут не возможно.
Следующее это Linux. С Linux все чуть сложнее, потому что в Linux обычно есть различные пакеты, но в пакетах не самая новая версия, а при работе с Node.JS лучше использовать последние версии, если нет каких-то особых причин так не делать. Так что если вы ставите из пакета, то убедитесь, что версия именно последняя. Если у вас пакет устарел, то Node.JS замечательно компилируется из исходников. Для этого можно загуглить «nodejs linux» в первых пяти ссылках обязательно будет инструкция по установке. Можете загуглить установку под какую то определенную систему например «node.js debian» и вы тоже находите инструкцию на первой же странице. Если вы пользуетесь Linux, то этот процесс не составит для вас особого труда.
Ну и наконец Windows. нажимаем на кнопку и скачиваем «node-v4.4.7-x64.msi» —

после того как он скачался, запускаю и соглашаюсь со всем, что предложит операционная система, все по умолчанию. Отлично Node.JS установился. Установился он в C:\Program Files\nodejs и тут есть как файл node.exe так и npm.cmd. NPM это пакетный менеджер мы рассмотрим его немножко позже.

Node.JS когда ставится прописывает себя в переменную PATH. Чтобы в этом удостовериться можете проделать следующее — в Windows 10 нажимаете правой кнопкой мыши на значок «windows», который некогда был «пуск». В появившемся окне выбираем «система»

далее жмем на «Дополнительные параметры системы», потом «переменные среды.


Перед нами появилось окно «переменные среды» в котором нас интересует записи в среду PATH. Причем не важно для всех пользователей или для вашего пользователя (в нижнем окне или в верхнем) главное, что присутствуют записи «C:\Users\ASUS\AppData\Roaming\npm» и «C:\Program Files\nodejs\». Теперь проверим работает ли Node.JS в принципе. Для этого в любой папке или на «Рабочем столе» при зажатой клавише «Shift» нажимаем правую кнопку мыши и выбираем «Открыть окно команд» такой трюк позволяет нам открыть консоль с прописанным путем в ту папку в которой мы нажали правую кнопку мыши. Другой способ открыть консоль через меню «пуск». Нажимаем правой кнопкой мыши меню «пуск», выбираем «Командная строка».


Итак мы запустили консоль. Вводим команду «node» и у нас появляется приглашение ввести javascript выражение. Это так называемый режим «repl» когда можно вводить javascript выражения и они выполняются.

Дважды нажав сочетание клавиш «Ctrl + c» мы выходим из этого режима. Вообще этот режим используется достаточно редко, здесь мы его используем просто, чтоб проверить, что установка прошла успешно. Конечно же такой запуск должен работать не только в «Windows», а и из любой операционной системы.
Как правила под Node.JS запускают файлы. Например создадим файл «1.js» и запишем в нем команду:
Как прописать PATH до nodejs?
Установил Node.js с помощью NVM и как бы все работает. Но плагины в Sublime Text 3 выдают ошибку. В частности Autoprefixer:
Autoprefixer
Couldn’t find Node.js. Make sure it’s in your $PATH by running `node -v` in your command-line.
Я фиг знает что надо еще прописать в $PATH, ведь в консоли все нормально работает.
В ~/.profile и ~/.bashrc добавил строки, чтобы наверняка:
export NVM_DIR="$HOME/.nvm" export PATH="$NVM_DIR/versions/node/v5.12.0/bin:$PATH"
- Вопрос задан более трёх лет назад
- 3451 просмотр
Комментировать
Решения вопроса 1

Алексей Ярков @yarkov Автор вопроса
Помог ответ? Отметь решением.
Решил проблему так:
$ sudo ln -s ~/home/user/.nvm/versions/node/v5.12.0/bin/node /usr/bin
Path¶
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:path предоставляет утилиты для работы с путями к файлам и каталогам. Доступ к нему можно получить с помощью:
const path = require('node:path');
Windows против POSIX¶
Работа модуля node:path по умолчанию зависит от операционной системы, на которой запущено приложение Node.js. В частности, при работе в операционной системе Windows модуль node:path будет считать, что используются пути в стиле Windows.
Поэтому использование path.basename() может дать разные результаты на POSIX и Windows:
path.basename('C:\\temp\\myfile.html'); // Возвращает: 'C:\temp\myfile.html'
path.basename('C:\\temp\\myfile.html'); // Возвращает: 'myfile.html'
Для достижения последовательных результатов при работе с путями к файлам Windows в любой операционной системе используйте path.win32 :
В POSIX и Windows:
path.win32.basename('C:\\temp\\myfile.html'); // Возвращает: 'myfile.html'
Для достижения согласованных результатов при работе с путями к файлам POSIX в любой операционной системе используйте path.posix :
В POSIX и Windows:
path.posix.basename('/tmp/myfile.html'); // Возвращает: 'myfile.html'
В Windows Node.js следует концепции рабочего каталога на каждом диске. Такое поведение можно наблюдать при использовании пути к диску без обратной косой черты. Например, path.resolve(‘C:\’) потенциально может вернуть другой результат, чем path.resolve(‘C:’) . Для получения дополнительной информации смотрите эту страницу MSDN.
path.basename(path[, suffix]) ¶
- путь
- suffix Необязательный суффикс для удаления
- Возвращает:
Метод path.basename() возвращает последнюю часть path , аналогично команде Unix basename . Заглавные разделители каталогов игнорируются.
1 2 3 4 5
path.basename('/foo/bar/baz/asdf/quux.html'); // Возвращает: 'quux.html' path.basename('/foo/bar/baz/asdf/quux.html', '.html'); // Возвращает: 'quux'
Хотя Windows обычно обрабатывает имена файлов, включая расширения файлов, без учета регистра, эта функция этого не делает. Например, C:\foo.html и C:\foo.HTML ссылаются на один и тот же файл, но basename рассматривает расширение как строку, чувствительную к регистру:
1 2 3 4 5
path.win32.basename('C:\foo.html', '.html'); // Возвращает: 'foo' path.win32.basename('C:\foo.HTML', '.html'); // Возвращает: 'foo.HTML'
Ошибка TypeError возникает, если path не является строкой или если указан `suffix, который не является строкой.
path.delimiter ¶
Предоставляет специфический для платформы разделитель путей:
- ; для Windows
- : для POSIX
Например, на POSIX:
1 2 3 4 5
console.log(process.env.PATH); // Печатает: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin' process.env.PATH.split(path.delimiter); // Возвращает: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
1 2 3 4 5
console.log(process.env.PATH); // Печатает: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\' process.env.PATH.split(path.delimiter); // Возвращает ['C:\Windows\system32', 'C:\Windows', 'C:\Program Files\node\']
path.dirname(path) ¶
- path
- Возвращает:
Метод path.dirname() возвращает имя каталога пути , аналогично команде Unix dirname . Заглавные разделители каталогов игнорируются, см. path.sep .
path.dirname('/foo/bar/baz/asdf/quux'); // Возвращает: '/foo/bar/baz/asdf'
Ошибка TypeError возникает, если path не является строкой.
path.extname(path) ¶
- path
- Возвращает:
Метод path.extname() возвращает расширение пути , начиная с последнего появления символа . (точка) до конца строки в последней части пути . Если в последней части path нет символа . , или если нет символов . , кроме первого символа основного имени path (см. path.basename() ), возвращается пустая строка.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
path.extname('index.html'); // Возвращает: '.html' path.extname('index.coffee.md'); // Возвращает: '.md' path.extname('index.'); // Возвращает: '.' path.extname('index'); // Возвращает: '' path.extname('.index'); // Возвращает: '' path.extname('.index.md'); // Возвращает: '.md'
Ошибка TypeError возникает, если path не является строкой.
path.format(pathObject) ¶
- pathObject Любой объект JavaScript, имеющий следующие свойства:
- dir
- root
- base
- name
- ext
Метод path.format() возвращает строку пути из объекта. Это противоположность path.parse() .
При задании свойств для pathObject помните, что существуют комбинации, в которых одно свойство имеет приоритет над другим:
- pathObject.root игнорируется, если указано pathObject.dir .
- pathObject.ext и pathObject.name игнорируются, если существует pathObject.base .
Например, на POSIX:
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
// Если указаны `dir`, `root` и `base`, // `$$$` // будет возвращен. `root` игнорируется. path.format( root: '/ignored', dir: '/home/user/dir', base: 'file.txt', >); // Возвращает: '/home/user/dir/file.txt' // `root` будет использоваться, если `dir` не указан. // Если указан только `root` или `dir` равен `root`, то разделитель платформы не будет включен. // платформенный разделитель не будет включен. `ext` будет проигнорирован. path.format( root: '/', base: 'file.txt', ext: 'ignored', >); // Возвращает: '/file.txt' // `name` + `ext` будут использованы, если `base` не указан. path.format( root: '/', name: 'file', ext: '.txt', >); // Возвращает: '/file.txt' // Точка будет добавлена, если она не указана в `ext`. path.format( root: '/', name: 'file', ext: 'txt', >); // Возвращает: '/file.txt'1 2 3 4 5
path.format( dir: 'C:pathdir', base: 'file.txt', >); // Возвращает: 'C:\path\dir\file.txt'path.isAbsolute(path) ¶
- путь
- Возвращает:
Метод path.isAbsolute() определяет, является ли path абсолютным путем.
Если заданный path является строкой нулевой длины, будет возвращена false .
Например, на POSIX:
1 2 3 4
path.isAbsolute('/foo/bar'); // true path.isAbsolute('/baz/. '); // true path.isAbsolute('qux/'); // false path.isAbsolute('.'); // false1 2 3 4 5 6 7
path.isAbsolute('//server'); // true path.isAbsolute('\\server'); // true path.isAbsolute('C:/foo/. '); // true path.isAbsolute('C:\foo. '); // true path.isAbsolute('bar\baz'); // false path.isAbsolute('bar/baz'); // false path.isAbsolute('.'); // falseОшибка TypeError возникает, если path не является строкой.
path.join([. paths]) ¶
Метод path.join() объединяет все заданные сегменты пути вместе, используя в качестве разделителя специфический для платформы разделитель, а затем нормализует полученный путь.
Сегменты пути нулевой длины игнорируются. Если объединенная строка пути является строкой нулевой длины, то будет возвращена .’ , представляющая текущий рабочий каталог.
1 2 3 4 5
path.join('/foo', 'bar', 'baz/asdf', 'quux', '.'); // Возвращает: '/foo/bar/baz/asdf' path.join('foo', <>, 'bar'); // Выбрасывает 'TypeError: Path must be a string. Received <>'Ошибка TypeError возникает, если любой из сегментов пути не является строкой.
path.normalize(path) ¶
- путь
- Возвращает:
Метод path.normalize() нормализует заданный путь , разрешая сегменты . и . .
Если найдено несколько последовательных символов разделения сегментов пути (например, / на POSIX и \ или / на Windows), они заменяются одним экземпляром специфического для платформы разделителя сегментов пути ( / на POSIX и \ на Windows). Последующие разделители сохраняются.
Если path является строкой нулевой длины, возвращается ‘.’ , представляющий текущий рабочий каталог.
Например, на POSIX:
path.normalize('/foo/bar//baz/asdf/quux/. '); // Возвращает: '/foo/bar/baz/asdf'path.normalize('C:\temp\\foo\bar\..\'); // Возвращает: 'C:\temp\foo\'Поскольку Windows распознает несколько разделителей путей, оба разделителя будут заменены экземплярами предпочитаемого Windows разделителя ( \ ):
path.win32.normalize('C:////temp\\////foo/bar'); // Возвращает: 'C:\temp\foo\bar'Ошибка TypeError возникает, если path не является строкой.
path.parse(path) ¶
- путь
- Возвращает:
Метод path.parse() возвращает объект, свойства которого представляют значимые элементы пути . Заглавные разделители каталогов игнорируются, см. path.sep .
Возвращаемый объект будет иметь следующие свойства:
Например, на POSIX:
1 2 3 4 5 6 7
path.parse('/home/user/dir/file.txt'); // Возвращает: // < root: '/',// dir: '/home/user/dir', // base: 'file.txt', // ext: '.txt', // name: 'file' >1 2 3 4 5 6 7
┌─────────────────────┬────────────┐ │ dir │ base │ ├──────┬ ├──────┬─────┤ │ root │ │ name │ ext │ " / home/user/dir / file .txt " └──────┴──────────────┴──────┴─────┘ (Все пробелы в строке "" следует игнорировать. Они предназначены исключительно для форматирования).1 2 3 4 5 6 7
path.parse('C:\\path\\dir\\file.txt'); // Возвращает: // < root: 'C:\',// dir: 'C:\path\dir', // base: 'file.txt', // ext: '.txt', // name: 'file' >1 2 3 4 5 6 7
┌─────────────────────┬────────────┐ │ dir │ base │ ├──────┬ ├──────┬─────┤ │ root │ │ name │ ext │ " C:\ путь\dir \ файл .txt " └──────┴──────────────┴──────┴─────┘ (Все пробелы в строке "" следует игнорировать. Они предназначены исключительно для форматирования).Ошибка TypeError возникает, если path не является строкой.
path.posix ¶
Свойство path.posix предоставляет доступ к POSIX-специфическим реализациям методов path .
API доступен через require(‘node:path’).posix или require(‘node:path/posix’) .
path.relative(from, to) ¶
Метод path.relative() возвращает относительный путь от from к to на основе текущего рабочего каталога. Если from и to разрешаются в один и тот же путь (после вызова path.resolve() для каждого), возвращается строка нулевой длины.
Если в качестве from или to передана строка нулевой длины, то вместо строк нулевой длины будет использоваться текущий рабочий каталог.
Например, на POSIX:
1 2 3 4 5
path.relative( '/data/orandea/test/aaa', '/data/orandea/impl/bbb' ); // Возвращает: '../../impl/bbb'path.relative('C:orandea\testaaa', 'C:orandeaimpl\bb'); // Возвращает: '..\.\.\impl\bbb'Ошибка TypeError возникает, если from или to не является строкой.
path.resolve([. paths]) ¶
Метод path.resolve() преобразует последовательность путей или сегментов путей в абсолютный путь.
Заданная последовательность путей обрабатывается справа налево, с добавлением каждого последующего path , пока не будет построен абсолютный путь. Например, если задана последовательность сегментов пути: /foo , /bar , baz , вызов path.resolve(‘/foo’, ‘/bar’, ‘baz’) вернет /bar/baz , потому что ‘baz’ не является абсолютным путем, а ‘/bar’ + ‘/’ + ‘baz’ является.
Если после обработки всех заданных сегментов path абсолютный путь еще не сгенерирован, то используется текущий рабочий каталог.
Результирующий путь нормализуется и удаляются косые черты, если только путь не разрешается в корневой каталог.
Сегменты пути нулевой длины игнорируются.
Если сегменты path не переданы, path.resolve() вернет абсолютный путь к текущему рабочему каталогу.
1 2 3 4 5 6 7 8 9 10 11 12 13
path.resolve('/foo/bar', './baz'); // Возвращает: '/foo/bar/baz' path.resolve('/foo/bar', '/tmp/file/'); // Возвращает: '/tmp/file' path.resolve( 'wwwroot', 'static_files/png/', '../gif/image.gif' ); // Если текущий рабочий каталог - /home/myself/node, // это возвращает '/home/myself/node/wwwroot/static_files/gif/image.gif'Ошибка TypeError возникает, если любой из аргументов не является строкой.
path.sep ¶
Предоставляет специфический для платформы разделитель сегментов пути:
- \ в Windows
- / на POSIX
Например, на POSIX:
'foo/bar/baz'.split(path.sep); // Возвращает: ['foo', 'bar', 'baz'].