Как добавить node js в path windows

Обновлено: 06.07.2024

Если вы используете Node.js как средство серверной разработки для своего сайта или web-приложения, то эта статья для вас, поскольку в ней мы рассмотрим настройку данной программной платформы и правильную организацию структуры папок для корректного функ­цио­ни­ро­ва­ния вашего проекта.

Для нужной версии вы сможете также установить и необходимые модули (см. ниже).

На хостинге функционирование Node.js реализовано через специальную библиотеку Passenger, которая осуществляет взаимодействие Вашего сайта с обработчиком Node.js

Рассмотрим структуру папок и файлов. Мы предлагаем реализовать ее примерно следующим образом:

Ваша цель - создать идентичную структуру и разместить файлы в соответствующих схеме директориях. Далее мы наполним их содержимым.

Чтобы сразу начать пользоваться необходимой вам версией Node (при условии, что Вы уже получили доступ по SSH), можете ввести следующие команды в терминале для загрузки и распаковки архива с файлами:

Файлы restart.txt и always_restart.txt необходимы для того, чтобы при внесении вами каких-либо изменений в рабочие файлы (к примеру, app.js) Passenger, применяя правила записанные в .htaccess, мог перехватывать их и применять в работе сайта. Отличие заключается в том, что restart.txt сработает только один раз, а always_restart.txt перезапускает процесы веб-сервера при каждом поступившем запросе. Рекомендуется использовать always_restart.txt только при разработке. После того, как разработка проекта будет завершена, не забудьте удалить этот файл, чтобы избежать задержек при отображении страницы посетителям.

Если Вы уверены в том, что ваш код работает без багов, но всё-равно видите ошибки на странице, можно принудительно завершить все процессы с помощью следующей команды через SSH-соединение:

После чего перезагрузить страницу.

И напоследок, осталось добавить скрипт для запуска Node в app.js. Ниже представлен код с официального сайта Node.js (в дальнейшем вы можете изменять его по своему усмотрению, сейчас мы лишь хотим убедиться, что всё работает):

Итак, все настройки произведены. Откройте сайт в новой вкладке. Если выводится Hello world, то всё работает, как и ожидалось. В противном случае, ещё раз пройдите по вышеприведённому алгоритму действий. Возможно, вы что то упустили.

Чтобы установить какой-либо модуль в директорию с файлами приложения, при этом используя установленную версию Node.js, необходимо для начала прописать путь до исполняемого файла node в .bash_profile (он лежит в корне вашего аккаунта). После этого вы сможете обращаться к нему из любой директории вашего проекта.

Итак, откройте .bash_profile и допишите следующую строку:

Для примера, рассмотрим подключение модуля mysql для работы с базой данных (предварительно, создайте таблицу под любым названием и поместите туда несколько записей). Чтобы установить даный модуль, зайдите через SSH-соединение в директорию «nodejs_app/www» и введите в терминале команду:

Таким обазом создастся файл package.json с данными о вашем приложении. После этого наберите команду:

Вы увидите, что автоматически создастся новая директория «node_modules» и подгрузятся необходимые нам для работы файлы.

Также, рекомендуем загрузить 2 часто используемых модуля - fs (для работы с файлами) и util (для красивого вывода объектов в консоль)

Далее, открываем файл нашего приложения app.js и добавляем следующий код:

В коде выше мы, с помощью модуля fs, создаём новый файл debug.log, в который будем помещать вывод функции console.log

Далее, переопределяем саму функцию console.log, задействуя поток на запись.

Теперь, при помощи модуля mysql, подключаемся к своей БД и выбираем все записи из нужной нам таблицы, прописывая их в созданный нами файл.

Проверим, всё ли сработало: перезагрузите страницу своего сайта и откройте файл debug.log - вы должны увидеть вывод всех записей из таблицы.

Для запуска приложений Node.js через crontab создайте shell скрипт и определите в нём переменную окружения PATH исходя из ваших требований. Например, для запуска приложения с помощью утилиты pm2 (process manager), используйте такой код в shell скрипте:

Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Помощь и поддержка».

Много гуглили, пробовали переустановить node.js с помощью официального установщика, но мой путь npm по-прежнему не работает.

Это не работает

Через 2 часа поисков в Google я обнаружил обходной путь.
Вместо того, чтобы просто набирать npm

Вам нужно добавить `C: \ Program Files \ nodejs \ node_modules \ npm \ bin` в ваш PATH.

Вам нужно добавить C:\Program Files\nodejs в переменную среды PATH. Для этого выполните следующие действия:

  1. Используйте чудо-кнопку глобального поиска для поиска «переменных среды»
  2. Нажмите "Изменить системные переменные среды".
  3. Щелкните «Переменные среды» в диалоговом окне.
  4. В поле «Системные переменные» найдите путь и отредактируйте его, чтобы включить C:\Program Files\nodejs . Убедитесь, что он отделен от других путей символом ; .

Вам придется перезапустить все открытые в данный момент командные строки, прежде чем они вступят в силу.

спасибо попробую, обязательно ли перезагружаться, чтобы изменения вступили в силу? Попробуйте изменить путь C:\Program Files\nodejs\node_modules\npm\bin на C:\Program Files\nodejs В моем случае автозаполнение не работало, но работали node и npm. Где VS 2017 устанавливает nodejs, я не могу его найти.

получить путь из npm:

npm config get prefix

и просто в качестве справки на будущее, это путь, который я добавил в Windows 10:

Обновить:

Если вы хотите добавить его для всех пользователей, просто добавьте следующий путь [от @ glenn-lawrence из комментариев]:

Именно это! По какой-то причине мой PATH потерял эту папку, npm работал, и установка приложений, таких как uglify-js, была выполнена правильно, но они не отображались ни в одном терминале. Я только что сделал то, что вы написали, добавил эту папку в PATH, и теперь Sublime Text может читать эти приложения. Оценил. В Windows 8 и 10 вы можете просто использовать, %AppData%\npm чтобы заставить его работать для любого пользователя. Если вы попали сюда в результате поиска, вы, скорее всего, ищете это. на моем домашнем ноутбуке с Windows 10: я использовал решение Гленна, но по какой-то странной причине мне пришлось переместить% APPDATA% \ npm, чтобы он занял первое место в списке записей для PATH. на других компьютерах мне не приходилось этого делать . В Windows жизнь разработчика определенно тяжелее. Этот совет действительно полезен.

Я использовал командлет и перешел по пути, по которому вы хотите переключить свои файлы npm. Введите npm root -g, чтобы узнать, по какому пути установлен ваш npm. Затем используйте префикс набора конфигурации npm, и ваш путь npm будет изменен на любой каталог, в котором вы сейчас находитесь.

Я согласен с г-ном З. Хуллахом, для меня не сработало ни одно решение, принимаю решение, предоставленное г-ном Мартезом C. environment / os windows 10 home с несколькими пользователями.

Перейдите в панель управления -> Система -> Расширенные настройки системы, затем переменные среды.

Отсюда найдите переменную пути, перейдите в конец строки и вставьте «C: \ Program Files \ nodejs \ node_modules \ npm \ bin» (измените путь к каталогу, в котором вы его установили, например, если вы специально установили его где угодно меняй это)

Если вы используете Windows, попробуйте этого, чувак:

1.) Найдите переменные среды в поле поиска меню «Пуск».
2.) Щелкните его, затем перейдите к Environment Variables.
3.) Щелкните ПУТЬ , щелкните Edit
4.) Щелкните Создать и попробуйте скопировать и вставить это: C: \ Program Files \ nodejs \ node_modules \ npm \ bin

Если вы получили ошибку. Сделайте номер 4.) Нажмите New, затем просмотрите папку bin

  • Вы также можете посетить эту ссылку для получения дополнительной информации.

Я использую Windows 10 - 64 бит, поэтому запускаю . Команды:

  • nvm arch 64 (чтобы по умолчанию использовать 64-битный исполняемый файл)
  • nvm list (чтобы перечислить все доступные версии узлов)
  • nvm install 8.0.0 (чтобы скачать ноду версии 8.0.0 - можете выбрать любую)
  • nvm use 8.0.0 (чтобы использовать эту конкретную версию)

В моем случае мне пришлось просто переключиться на версию 8.5.0, а затем снова переключиться на 8.0.0, и это было исправлено. Очевидно, NVM устанавливает переменные PATH всякий раз, когда вы делаете этот переключатель.

Забываю включить nvm. Поэтому мне нужно выполнить команду «nvm on». Это первая установка.

Отредактируйте переменные среды System и введите следующий путь:

Это сработало для меня: 1. npm root -g (чтобы увидеть, что текущий npm установлен) 2. префикс набора конфигурации npm (для изменения пути)

Вы можете выполнить следующие шаги:

  • Поиск переменных среды из поля поиска меню «Пуск».
  • Щелкните его, затем перейдите к Переменные среды.
  • Нажмите ПУТЬ
  • нажмите Edit
  • Нажмите New и попробуйте скопировать и вставить свой путь к папке bin [найдите, где вы установили узел], например, в соответствии с моей машиной ' C:\Program Files\nodejs\node_modules\npm\bin '

Если у вас есть ошибка. попробуйте другой шаг:

  • Нажмите « Создать» , затем перейдите к папке « bin ».

измените путь для nodejs в среде varibale.

установка переменной среды

Я делал это в Windows 10,

  1. Искать переменные среды в поиске Windows
  2. В результате появится опция «Изменить системные переменные среды».
  3. Откройте его, выберите «Путь» и нажмите «Редактировать», затем нажмите «Создать», добавьте путь к вашему nodeJS Bin, т.е. на моем компьютере он установлен в c:\programfiles\nodejs\node_modules\npm\bin
  4. После добавления нажмите «ОК», затем закройте

Теперь вы можете написать свою команду в командной строке или в PowerShell.

Если вы используете WIndows 10, выберите PowerShell с богатым пользовательским интерфейсом.

Если после успешной установки npm, и вы хотите установить VueJS, то это то, что вам следует сделать

после выполнения следующей команды (от имени администратора)

npm install --global vue-cli

Он поместит vue.cmd в следующий каталог C:\Users\YourUserName\AppData\Roaming\npm

вы увидите это в своем каталоге.

Теперь, чтобы использовать vue как команду в cmd. Откройте cmd от имени администратора и выполните следующую команду.

setx /M path "%path%;%appdata%\npm"

Теперь перезапустите cmd и снова запустите vue. Он должен работать нормально, и тогда вы можете начать разработку с помощью VueJS.

Надеюсь, это поможет.

У меня была эта проблема на 2 компьютерах в моем доме с Windows 10 на каждом. Проблема началась, когда мне пришлось изменить несколько переменных среды для проектов, над которыми я работал над Visual Studio 2017 и т. Д. После нескольких месяцев, когда я вернулся к использованию node js и npm, у меня снова возникла эта проблема, и ни одно из вышеперечисленных решений не помогло. Я видел комментарий Шона к решению Яра и смешал оба решения: 1) в окне переменных среды у меня была одна дополнительная переменная, которая содержала это значение:% APPDATA% \ npm. Я удалил его, и проблема исчезла!

В path Модуль предоставляет утилиты для работы с путями к файлам и каталогам. Доступ к нему можно получить, используя:

Windows против POSIX¶

Работа по умолчанию path Модуль зависит от операционной системы, в которой запущено приложение Node.js. В частности, при работе в операционной системе Windows path модуль будет предполагать, что используются пути в стиле Windows.

Итак, используя path.basename() может дать разные результаты в POSIX и Windows:

Чтобы добиться согласованных результатов при работе с путями к файлам Windows в любой операционной системе, используйте path.win32 :

В POSIX и Windows:

Чтобы добиться согласованных результатов при работе с путями к файлам POSIX в любой операционной системе, используйте path.posix :

В POSIX и Windows:

В Windows Node.js следует концепции рабочего каталога для каждого диска. Такое поведение наблюдается при использовании пути к диску без обратной косой черты. Например, path.resolve('C:\\') потенциально может вернуть другой результат, чем path.resolve('C:') . Для получения дополнительной информации см. эта страница MSDN.

path.basename(path[, ext]) ¶

  • path
  • ext Необязательное расширение файла
  • Возвращает:

В path.basename() метод возвращает последнюю часть path , аналогично Unix basename команда. Конечные разделители каталогов игнорируются, см. path.sep .

Хотя Windows обычно обрабатывает имена файлов, включая расширения файлов, без учета регистра, эта функция этого не делает. Например, C:\\foo.html а также C:\\foo.HTML относятся к тому же файлу, но basename обрабатывает расширение как строку с учетом регистра:

А TypeError бросается, если path не является строкой или если ext дается и не является строкой.

path.delimiter ¶

Предоставляет разделитель пути для конкретной платформы:

Например, в POSIX:

path.dirname(path) ¶

В path.dirname() метод возвращает имя каталога path , аналогично Unix dirname команда. Конечные разделители каталогов игнорируются, см. path.sep .

А TypeError бросается, если path не строка.

path.extname(path) ¶

В path.extname() метод возвращает расширение path , от последнего появления . (точка) до конца строки в последней части path . Если нет . в последней части path , или если нет . символы кроме первого символа базового имени path (видеть path.basename() ) возвращается пустая строка.

А 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:

path.isAbsolute(path) ¶

В path.isAbsolute() метод определяет, если path это абсолютный путь.

Если данный path строка нулевой длины, false будет возвращен.

Например, в POSIX:

А TypeError бросается, если path не строка.

path.join([. paths]) ¶

  • . paths Последовательность сегментов пути
  • Возвращает:

В path.join() метод объединяет все данные path сегменты вместе с использованием разделителя для конкретной платформы в качестве разделителя, а затем нормализует полученный путь.

Нулевой длины path сегменты игнорируются. Если объединенная строка пути является строкой нулевой длины, тогда '.' будет возвращен, представляя текущий рабочий каталог.

А TypeError выбрасывается, если какой-либо из сегментов пути не является строкой.

path.normalize(path) ¶

В path.normalize() метод нормализует данный path , разрешение '..' а также '.' сегменты.

При обнаружении нескольких последовательных символов разделения сегментов пути (например, / на POSIX и либо \ или / в Windows) они заменяются одним экземпляром разделителя сегментов пути, зависящего от платформы ( / на POSIX и \ в Windows). Конечные разделители сохранены.

Если path строка нулевой длины, '.' возвращается, представляя текущий рабочий каталог.

Например, в POSIX:

Поскольку Windows распознает несколько разделителей путей, оба разделителя будут заменены экземплярами предпочтительного разделителя Windows ( \ ):

А TypeError бросается, если path не строка.

path.parse(path) ¶

В path.parse() метод возвращает объект, свойства которого представляют собой важные элементы path . Конечные разделители каталогов игнорируются, см. path.sep .

Возвращенный объект будет иметь следующие свойства:

Например, в POSIX:

А TypeError бросается, если path не строка.

path.posix ¶

В path.posix свойство обеспечивает доступ к специфическим реализациям POSIX path методы.

API доступен через require('path').posix или require('path/posix') .

path.relative(from, to) ¶

В path.relative() метод возвращает относительный путь от from к to на основе текущего рабочего каталога. Если from а также to каждый разрешает один и тот же путь (после вызова path.resolve() на каждом) возвращается строка нулевой длины.

Если строка нулевой длины передается как from или to , текущий рабочий каталог будет использоваться вместо строк нулевой длины.

Например, в POSIX:

А TypeError выбрасывается, если from или to не строка.

path.resolve([. paths]) ¶

  • . paths Последовательность путей или сегментов пути
  • Возвращает:

В path.resolve() преобразует последовательность путей или сегментов пути в абсолютный путь.

Заданная последовательность путей обрабатывается справа налево, с каждым последующим path добавляется до тех пор, пока не будет построен абсолютный путь. Например, учитывая последовательность сегментов пути: /foo , /bar , baz , звоню path.resolve('/foo', '/bar', 'baz') вернется /bar/baz потому что 'baz' это не абсолютный путь, но '/bar' + '/' + 'baz' является.

Если после обработки все дано path сегменты, абсолютный путь еще не сформирован, используется текущий рабочий каталог.

Результирующий путь нормализуется, а завершающие косые черты удаляются, если путь не разрешен до корневого каталога.

Нулевой длины path сегменты игнорируются.

Если нет path сегменты пройдены, path.resolve() вернет абсолютный путь к текущему рабочему каталогу.

А TypeError выбрасывается, если какой-либо из аргументов не является строкой.

path.sep ¶

Предоставляет разделитель сегментов пути, зависящий от платформы:

Например, в POSIX:

В Windows обе косые черты ( / ) и обратная косая черта ( \ ) принимаются как разделители отрезков пути; Однако path методы только добавляют обратную косую черту ( \ ).

path.toNamespacedPath(path) ¶

Только в системах Windows возвращает эквивалент путь с префиксом пространства имен для данного path . Если path не строка, path будет возвращен без изменений.

Этот метод имеет смысл только в системах Windows. В системах POSIX метод не работает и всегда возвращает path без доработок.

У меня возникла странная проблема: Resume, хотя node path - это список в Path, он не находит node.

Я следил за предложениями в SO, добавляя переменную к переменным среды и отображая Ok в пути:

Следующая строка не будет выполнена

Но если я перейду в список папок в Path, то он будет работать нормально.

ОТВЕТЫ

Ответ 1

Каталог nodejs в вашем PATH не распознается, потому что перед точкой с запятой существует пробел, поэтому Windows ищет каталог с пробелом в конце имени, которого не существует.

Ответ 2

Ошибка: 'node' не распознается как внутренняя или внешняя команда

Проблема может заключаться в том, что node не установлен на компьютере, на котором работает приложение.

Затем установите его и установите переменную среды для nodejs.

Или

Еще одной причиной может быть путь nodejs, который не задан в переменной среды.

путь nodejs должен быть доступен здесь. Если недоступно, добавьте следующее:

C:\Program Files (x86)\nodejs ИЛИ C:\Program Files\nodejs

Теперь перезапустите приложение, и ошибка была решена.

Ответ 3

Слэш после\nodejs\работал у меня

Ответ 4

Обычно переменные среды не действуют до тех пор, пока система Restart.

Я предлагаю System Restart для всех тех, кто сталкивается с той же проблемой при выполнении чистой установки.

Это сработало для меня.

Ответ 5

Если вы сделали npm install jasmine-node -g , вам просто нужно сделать jasmine-node spec (no call prefix).

Ответ 6

В Windows вам необходимо установить путь к папке node.js в системные переменные или пользовательские переменные.

2) в разделе "Пользовательские переменные" или "Системные переменные" найдите переменную PATH и добавьте путь к папке node.js как значение. Обычно это C:\Program Files\nodejs; . Если переменная не существует, создайте ее.

3) Перезагрузите среду IDE или компьютер.

Полезно также добавить пути "npm" и "Git" как переменные, разделенные точкой с запятой.

Ответ 7

Если вы проверили свой PATH и уверены, что путь для node добавлен правильно, то вы, вероятно, столкнетесь с проблемой во время выполнения команд node OR npm с CLI, отличным от интерфейс командной строки по умолчанию для операционной системы (например, Git bash в Windows).

Странная часть состоит в том, что вы можете проверить node -v и npm -v в этих CLI, но по некоторым причинам они не очень хорошо работают с этими командами (особенно в сочетании с install или update ).

Попробуйте запустить node с терминалом по умолчанию для вашей ОС.

Ответ 8

Я столкнулся с этой проблемой даже после добавления node.exe в PATH. Я не смог запустить команду node в случайных местах без запуска командной строки в качестве администратора.

Решение этой проблемы заключается в том, что вы должны предоставить полный доступ к этому файлу node.exe для разных типов пользователей. откройте свойства node.exe, перейдите на вкладки безопасности, проверьте все параметры безопасности для пользователя на локальном компьютере.

после этого вы сможете получить доступ к node.exe файлу из любого места.

Ответ 9

И следующее решение:

  1. Установите переменную среды NODE_HOME как C:\Program Files\nodejs
  2. Откройте окно cmd и запустите:

Ответ 10

Это так же просто, как добавить расположение nodejs ( C:\Program Files (x86)\nodejs ) в вашу переменную PATH и перезапустить приложение с помощью "Запуск от имени администратора".


У опытного программиста, сталкивающегося с новой технологией для решения конкретной прикладной задачи, сразу возникает множество практических вопросов. Как правильно установить платформу? Где и что будет лежать после установки? Как создать каркас проекта, как он будет структурирован? Как разбивать код на модули? Как добавить библиотеку в проект? Где вообще взять готовую библиотеку, которая делает то, что нужно? Как и в чём отлаживать код? Как написать модульный тест?

Думаю, что данная статья будет полезна не только разработчикам из мира Java, но и всем, кто начинает работу с платформой node.js.




Установка и настройка

Установка node и npm
Windows


По умолчанию под Windows node.js устанавливается в папку c:\Program Files\nodejs. Также по умолчанию устанавливаются все компоненты (собственно node.js, пакетный менеджер npm, ссылка на документацию; кроме того, путь к node и npm прописывается в переменную среды PATH). Желательно убедиться, что все компоненты установки выбраны.


В OS X проще всего установить node через менеджер пакетов brew. Для этого необходимо выполнить команду:


Node установится в папку /usr/local/Cellar/<версия>/node с постоянным симлинком /usr/local/opt/node/.

Ubuntu (x64)

Для установки последней ветки (0.12) лучше скачать дистрибутив с сайта:


Дистрибутив распакуется в папку /usr/local в подпапки bin, include, lib и share.

Проверка установки

Для проверки корректности установки можно запустить в командной строке node и npm с параметром --version:

Установка плагина в IntelliJ IDEA

Запустим IntelliJ IDEA, зайдём в настройки.


Найдём раздел Plugins и щёлкнем «Install JetBrains Plugin. »


Найдём в списке плагин NodeJS, щёлкнем по кнопке «Install Plugin». По окончании загрузки кнопка превратится в «Restart IntelliJ IDEA» — щёлкнем её для перезагрузки среды.


После перезагрузки зайдём в настройки и найдём раздел Languages & Frameworks -> Node.js and NPM. Убедимся, что в разделе «Node interpreter» указана ссылка на установленный исполняемый файл node.


В разделе «Sources of node.js Core Modules» щёлкнем кнопку «Configure». В появившемся окне выберем «Download from the Internet» и щёлкнем «Configure», при этом скачаются и проиндексируются исходники node.js. Это позволит просматривать исходники при разработке.


В разделе packages отображаются глобально установленные пакеты (см. раздел «Глобальные пакеты»). В этом окне можно добавлять, удалять и обновлять эти пакеты. Если рядом с именем пакета отображается синяя стрелочка, значит, доступно обновление. Глобально лучше устанавливать только пакеты-утилиты.

Первые шаги

Пишем «Hello World»

Создадим файл app.js, который формирует и выводит соответствующую строчку в консоль:


Запустим его командой:

Используем REPL

Запустив команду node без аргументов, можно попасть в REPL-цикл, аналогичный браузерной JS-консоли. В нём можно выполнять и проверять фрагменты кода:


Каждая выполненная строчка имеет возвращаемый результат, который также выводится в консоль. Функция console.log() не возвращает результата, поэтому после её вызова в консоли вывелось «undefined».

В REPL-консоли работает автодополнение по нажатию клавиши Tab. Например, если написать «console.» и нажать Tab, то отобразится список атрибутов и функций объекта console.


Для выхода из консоли можно нажать Ctrl+D.

Работа с npm

Инициализация проекта

Для инициализации проекта выполним в каталоге будущего проекта команду npm init и введём необходимые данные в интерактивном режиме (можно просто нажимать Enter, так как предлагаются внятные настройки по умолчанию):


По окончании выполнения утилиты в текущем каталоге будет создан файл package.json, описывающий конфигурацию проекта. В нём же будет храниться информация о зависимостях проекта.

Добавление пакетов-зависимостей в проект

Чтобы установить зависимость в проект, используется команда npm install. При этом в текущем каталоге будет создана папка node_modules, в которую будет помещён загруженный пакет. Ключ --save означает, что информация об этой зависимости будет добавлена также в package.json. Например, установим пакет log4js для протоколирования:


После выполнения этой команды обнаружим, что в текущем каталоге появилась папка node_modules\open, а в файле package.json добавилась запись:


Запись о зависимости можно добавить в файл package.json и вручную, но после этого необходимо выполнить npm install, чтобы загрузить указанную зависимость в каталог node_modules.

Глобальные пакеты

Пакеты можно устанавливать как в каталог проекта, так и глобально, тогда они будут видны для всех проектов. Как правило, глобально устанавливаются только пакеты, являющиеся утилитами, например, утилита управления зависимостями bower, сборщики gulp и grunt, генератор проектов на Express express-generator, и т.д.

Глобальные пакеты устанавливаются:

  • В Windows 8 — в %USERPROFILE%\AppData\Roaming\npm\node_modules,
  • В OS X — в /usr/local/lib/node_modules,
  • В Ubuntu — в /usr/local/lib/node_modules.

Чтобы установить пакет глобально, команда npm выполняется с ключом -g:

Работа в IntelliJ IDEA

Открытие проекта

Чтобы открыть проект на node.js, достаточно открыть папку, содержащую package.json.


Настройка конфигурации запуска

Для запуска и отладки в IntelliJ IDEA необходимо создать конфигурацию запуска. Для этого зайдём в Run -> Run Configurations, щёлкнем плюсик в левом верхнем углу и выберем node.js:


Заполним поля Name и JavaScript File:


Теперь можно запускать скрипт в обычном режиме и в режиме отладки с помощью соответствующих кнопок на панели инструментов:


Отладка

Для отладки необходимо запустить созданную конфигурацию в режиме Debug. При этом можно ставить брейкпойнты на строки, «шагать» по строкам, смотреть содержимое стека вызовов, значения переменных в текущем контексте и делать всё прочее, что ожидается от отладочного режима.


Модульность в node.js

В Java единицами модульности являются пакеты и классы. Единицей модульности в node.js является файл. Чтобы сделать импорт одного модуля в другой, используется модуль-локальная (т.е. неявно определённая в каждом модуле) функция require(). Стандартные модули или пакеты, установленные в node_modules, можно импортировать по простому имени:

Если требуется импортировать не стандартный модуль, а один из модулей проекта в другой, то аргумент для функции require() должен содержать размещение модуля относительно текущего модуля (не считая расширения .js), например:

Всё, что объявлено в файле модуля, видно только внутри него — за исключением того, что мы явно экспортируем. Например, в отличие от JavaScript в браузере, область видимости переменной, объявленной на верхнем уровне, ограничена тем модулем, в котором она объявлена:


Переменная enterprise будет видна только внутри модуля mymodule.js.

Чтобы экспортировать что-либо из модуля, можно использовать доступный в любом модуле атрибут module.exports, который по умолчанию содержит в себе пустой объект. Можно также использовать сокращённую ссылку на него — модуль-локальную переменную exports. Функция require(), которой передано имя нашего модуля, будет возвращать то, что мы поместили в module.exports. Соответственно, если мы поместим туда такой объект:


То именно его вернёт функция require, будучи вызванной в другом модуле:


Полученный объект mymodule — это тот же самый объект с функцией fun, который был присвоен атрибуту module.exports в нашем модуле.

Однако подобным способом сделать экспорт не получится:


Это связано с тем, что из модуля всегда экспортируется атрибут module.exports. Заменив сокращённую ссылку exports на другой объект, мы не изменили этот атрибут. Сокращённая ссылка exports может быть использована только для экспорта каких-то отдельных функций или атрибутов:

Тестирование

Mocha

Для добавления модульного тестирования в проект лучше всего начать с фреймворка Mocha. Устанавливается он как глобальный npm-модуль:


Протестируем модуль с простейшей функцией:


Тесты mocha по умолчанию размещаются в подпапке test:


Первый аргумент функции describe — это человекочитаемое описание поведения тестируемой функции или модуля, которое будет выводиться в консоль при прогоне тестов. Здесь желательно придерживаться некоторых структурных соглашений — например, в первом describe указывается имя модуля, во вложенном — имя тестируемой функции. Запустим mocha и убедимся, что тест нашей функции проходит:

Использование Mocha в IntelliJ IDEA

Mocha также умеет мониторить исходники и автоматически прогонять тесты при изменении кода. Запустить её в таком режиме можно и из командной строки с помощью параметра запуска --watch, но раз уж мы строим наш рабочий процесс в IntelliJ IDEA, то используем для этого специальную конфигурацию запуска:


В окне настройки конфигурации запуска укажем название этой конфигурации (Name), а также путь к папке с тестами (Test directory). Сохраним конфигурацию.


Изменим код функции так, чтобы он не проходил, и выполним (Run) конфигурацию запуска Mocha.


Теперь щёлкнем кнопку Toggle auto-test в появившейся панели. Эта кнопка включает режим автоматического прогона тестов при изменении исходников.


Исправим код функции, при этом Mocha автоматически прогонит тест и покажет, что теперь всё хорошо:

Читайте также: