Как добавить node js в path
Перейти к содержимому

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

  • автор:

how to set path for node.js

its giving me an error CALL «C:\Program Files\nodejs\\node.exe» «C:\Program Files\nodejs\\node_modules\npm\bin\npm-cli.js» prefix -g is not recognised as internal or external command i tried setting nodejs path in system variables . Following is the statement i added

C:\Program Files\nodejs 

enter image description here

i restarted the system too, stil its not working how do i solve this?

Как в переменную окружения добавить путь из которой я запускаю программу?

Я пишу свой менеджер пакетов (эксперимент) на nodeJS. Как мне добавить в переменную окружения node текущую директорию из которой я запускаю программу (программа добавленна в path windows и запускается из любой папки — node menejer.js)? Не путь к директории в которой находиться сам менеджер! А директория из которой я запускаю менеджер!

Отслеживать

13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков

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

Если вы используете 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 автоматически прогонит тест и покажет, что теперь всё хорошо:

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

  • Не работает принтер на windows 7 sm контроллер
  • Как установить hid драйвера для windows 10
  • Звук как из бочки как исправить windows 10
  • Как отключить print screen windows 10
  • Как сделать кнопку гибернации windows 10 на рабочий стол

Настройка приложения Node.js для работы в среде Ubuntu 20.04

Настройка приложения Node.js для работы в среде Ubuntu 20.04

Node.js — среда исполнения JavaScript с открытым исходным кодом, предназначенная для построения серверных и сетевых приложений. Данная платформа работает в операционных системах Linux, macOS, FreeBSD и Windows. Хотя вы можете запускать приложения Node.js через командную строку, этот обучающий модуль посвящен их запуску в качестве службы. Это означает, что они будут перезапускаться при перезагрузке системы или неисправности, и что их можно безопасно использовать в производственной среде.

В этом обучающем модуле вы научитесь создавать готовую производственную среду Node.js на одном сервере Ubuntu 20.04. Этот сервер будет выполнять приложение Node.js под управлением PM2 и предоставлять пользователям безопасный доступ к приложению через обратный прокси-сервер Nginx. Сервер Nginx обеспечивает поддержку HTTPS с использованием бесплатного сертификата от Let’s Encrypt.

Предварительные требования

Этот обучающий модуль предполагает, что у вас имеется следующее:

  • Сервер Ubuntu 20.04, настроенный в соответствии с указаниями обучающего модуля Начальная настройка сервера Ubuntu 20.04. В системе должен быть задан пользователь без привилегий root с привилегиями sudo, а также должен быть включен брандмауэр.
  • Доменное имя, указывающее на публичный IP-адрес вашего сервера. В этом обучающем модуле мы будем использовать доменное имя example.com.
  • Веб-сервер Nginx, установленный в соответствии с указаниями обучающего модуля Установка Nginx в Ubuntu 20.04.
  • Конфигурация Nginx с SSL с использованием сертификатом Let’s Encrypt. Статья Защита веб-сервера Nginx сертификатом Let’s Encrypt в Ubuntu 20.04 поможет вам выполнить необходимые настройки.

Если предварительные требования выполнены, у вас должен быть сервер, обслуживающий используемую по умолчанию страницу назначения вашего домена по адресу https:// example.com / .

Шаг 1 — Установка Node.js

Для начала мы установим самый быстрый выпуск LTS Node.js, используя архивы пакетов NodeSource.

Вначале мы установим NodeSource PPA, чтобы получить доступ к его содержимому. Убедитесь, что вы находитесь в домашнем каталоге, и используйте curl для получения скрипта установки для последней версии LTS Node.js из его архивов.

Вы можете просмотреть содержимое скрипта с помощью nano или предпочитаемого текстового редактора:

Завершив проверку скрипта, запустите его от имени пользователя sudo :

Архив PPA будет добавлен в вашу конфигурацию и кэш локальных пакетов автоматически обновится. После запуска скрипта установки Nodesource вы можете установить пакет Node.js:

Чтобы проверить номер версии Node.js, установленной на начальном шаге, введите:

Output
v14.4.0

Примечание. При установке из NodeSource PPA исполняемый файл Node.js имеет имя nodejs , а не node .

Пакет nodejs содержит двоичный файл nodejs , а также диспетчер пакетов npm для модулей Node, так что отдельно устанавливать npm не нужно.

npm использует файл конфигурации в домашнем каталоге, чтобы отслеживать обновления. Он создается при первом запуске npm . Выполните следующую команду, чтобы проверить установку npm и создать файл конфигурации:

Output
6.14.5

Для работы некоторых пакетов npm (например, требующих компиляцию кода из источника) потребуется установить пакет build-essential :

Теперь у вас есть необходимые инструменты для работы с пакетами npm , которые требуют компиляции кода из источника.

Установив исполняемый модуль Node.js, мы можем перейти к написанию приложения Node.js.

Шаг 2 — Создание приложения Node.js

Напишем приложение Hello World, возвращающее «Hello World» в ответ на любые запросы HTTP. Этот образец приложения поможет вам выполнить настройку Node.js. Вы можете заменить его собственным приложением, но при этом обязательно измените приложение для прослушивания подходящих IP-адресов и портов.

Вначале создадим образец приложения под именем hello.js :

Вставьте в файл следующий код:

const http = require('http'); const hostname = 'localhost'; const port = 3000; const server = http.createServer((req, res) =>  res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!\n'); >); server.listen(port, hostname, () =>  console.log(`Server running at http://$hostname>:$port>/`); >); 

Сохраните файл и выйдите из редактора.

Это приложение Node.js прослушивает заданный адрес ( localhost ) и порт ( 3000 ) и возвращает текст «Hello World!» с кодом успешного выполнения a 200 HTTP. Поскольку мы прослушиваем localhost , удаленные клиенты не смогут подключиться к нашему приложению.

Чтобы протестировать приложение, введите:

Результат будет выглядеть следующим образом:

Output
Server running at http://localhost:3000/

Примечание. Такой способ запуска приложения Node.js блокирует дополнительные команды, пока приложение не будет закрыто нажатием CTRL+C .

Чтобы протестировать приложение, откройте на сервере другой сеанс терминала и подключитесь к localhost с помощью команды curl :

Если вы увидите следующий результат, приложение работает нормально и прослушивает правильные адрес и порт:

Output
Hello World!

Если вы не увидите ожидаемого результата, убедитесь, что ваше приложение Node.js запущено и настроено для прослушивание правильных адреса и порта.

Убедившись, что приложение работает, остановите его (если еще не сделали этого) нажатием CTRL+C .

Шаг 3 — Установка PM2

Теперь установим диспетчер процессов PM2, предназначенный для приложений Node.js. PM2 позволяет преобразовывать приложения в демонов, чтобы они работали как службы в фоновом режиме.

Используйте npm для установки последней версии PM2 на своем сервере:

Опция -g указывает npm выполнить глобальную установку модуля, чтобы он был доступен в масштабе всей системы.

Вначале используем команду pm2 для запуска вашего приложения hello.js в фоновом режиме:

Также она добавит ваше приложение в список процессов PM2, которы йвыводится при каждом запуске приложения:

Output
. [PM2] Spawning PM2 daemon with pm2_home=/home/sammy/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /home/sammy/hello.js in fork_mode (1 instance) [PM2] Done. ┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐ │ id │ name │ mode │ ↺ │ status │ cpu │ memory │ ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤ │ 0 │ hello │ fork │ 0 │ online │ 0% │ 25.2mb │ └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

Как указано выше, PM2 автоматически присваивает App name (основанное на имени файла, без расширения .js ) и PM2 id . PM2 также обслуживает другие данные, такие как PID процесса, его текущее состояние и использование памяти.

Приложения, запускаемые через PM2, автоматически перезапускаются в случае сбоя или прекращения работы приложения, но мы можем выполнить дополнительный шаг, чтобы запускать приложение при запуске системы с помощью субкоманды startup . Эта субкоманда генерирует и настраивает скрипт запуска PM2 и управляемых им процессов при загрузке сервера:

Последняя строка результатов содержит команду, которую нужно запустить с привилегиями суперпользователя для настройки запуска PM2 при загрузке:

Output
[PM2] Init System found: systemd sammy [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy --hp /home/sammy

Запустите команду из результатов, указав свое имя пользователя вместо sammy :

Дополнительно мы можем сохранить список процессов PM2 и соответствующие среды:

Теперь вы создали блок systemd, который запускает pm2 для вашего пользователя при загрузке. Этот экземпляр pm2 запускает hello.js .

Запустите службу с помощью команды systemctl :

Если на этом этапе вы увидите ошибку, вам может потребоваться перезагрузка, которую можно выполнить с помощью sudo reboot .

Проверьте состояние блока systemd:

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

Остановите приложение с помощью этой команды (укажите имя приложения PM2 или id ):

Выведем список приложений, управление которыми осуществляет PM2:

Получим информацию об определенном приложении по имени приложения :

Монитор процесса PM2 запускается с помощью субкоманды monit . При этом отображается состояние приложение, использование ресурсов ЦП и использование памяти:

При запуске команды pm2 без аргументов отображается страница справки с примерами использования.

Теперь ваше приложение Node.js запущено и управляется PM2, и мы можем настроить обратный прокси-сервер.

Шаг 4 — Настройка Nginx в качестве обратного прокси-сервера

Ваше приложение запущено и прослушивает localhost , но вам нужно дать пользователям возможность доступа к нему. Для этой цели мы настроим веб-сервер Nginx в качестве обратного прокси-сервера.

В предварительных обучающих модулях вы настроили конфигурацию Nginx в файле /etc/nginx/sites-available/ example.com . Откройте этот файл для редактирования:

В блоке server должен содержаться блок location / . Замените содержимое этого блока следующей конфигурацией. Если ваше приложение настроено для прослушивания другого порта, измените номер порта в выделенной части на подходящий:

/etc/nginx/sites-available/example.com

server < . location / < proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; > . > 

Так сервер настраивается для ответа на запросы root. Если наш сервер доступен по адресу example.com , при попытке доступа к https:// example.com / через браузер будет отправлен запрос hello.js с прослушиванием порта 3000 хоста localhost .

Вы можете добавить в этот же серверный блок дополнительные блоки location , чтобы предоставить другим приложениям доступ к этому же серверу. Например, если вы используете другое приложение Node.js на порту 3001 , вы сможете добавить следующий блок location, чтобы разрешить доступ к нему через https:// example.com / app2 :

/etc/nginx/sites-available/example.com — Optional

server < . location /app2 < proxy_pass http://localhost:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; > . > 

Завершив добавление блоков location для ваших приложений, сохраните файл и закройте редактор.

Убедитесь в отсутствии ошибок синтаксиса с помощью следующей команды:

Если ваше приложение Node.js запущено и конфигурации вашего приложения и Nginx настроены правильно, вы должны иметь возможность доступа к вашему приложению через обратный прокси-сервер Nginx. Попробуйте открыть URL вашего сервера (публичный IP-адрес или доменное имя).

Заключение

Поздравляем! Теперь у вас есть приложение Node.js, работающее за обратным прокси-сервером Nginx на сервере Ubuntu 20.04. Настройка обратного прокси-сервера достаточно гибкая, чтобы предоставить вашим пользователям доступ к другим приложениям или статическому веб-контенту, который вы хотите опубликовать.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *