Node.js FAQ – часто задаваемые вопросы по Node.js

Q: Как запустить локальный веб-сервер для разработки?
A: Даже если приложение полностью клиентское, лучше его запускать на веб-сервере, потому что большинство современных браузеров по причинам безопасности не позволяют выполнять JavaScript-запросы к серверу, если страница загружена непосредственно из файловой системы.

На примере приложения angular-phonecat, надо выполнить команду:
npm start
Данная команда запустит локальный веб-сервер слушающий порт 8000. Открыть приложение можно по адресу: http://localhost:8000/app/index.html
Для того чтобы изменить IP-адрес или порт надо изменить скрипт "start" внутри package.json. Параметр -a используется для задания адреса, а параметр -p для задания порта.

Q: Как протестировать приложение?
A: Unit-тесты отвечают за тестирование маленьких изолированных частей приложения. Они находятся в папке test/unit. Unit-тестировщик Karma:
  • считывает файл test/karma.conf.js;
  • запускает Chrome и подключает его к Karma;
  • выполняет все unit-тесты в браузере;
  • отчитывается о результатах тестов в терминале/командной строке;
  • отслеживает все JavaScript-файлы в проекте и перезапускает тесты, когда файлы изменяются.
Полезно держать тестировщик запущенным в фоне, чтобы моментально получать отзыв на проводимые изменения в коде.


End to End тесты используются для того чтобы проверить приложение в целом. Например, что вьюхи отображаются и функционируют корректно. Тестирование проводится через имитацию пользовательского взаимодействия с реальным приложением работающем в браузере. End to End тесты находятся в папке test/e2e. В проекте angular-phonecat используется Protractor для запуска e2e-тестов. Protractor использует драйверы для взаимодействия с браузером, установить (установка проводится единожды) их можно командой: npm run update-webdriver 
Т.к. Protractor взаимодействует с запущенным приложением, то предварительно надо запустить приложение: npm start
Protractor:
  • считывает конфигурационный файл test/protractor-conf.js;
  • открывает Chrome и подключает его к приложению;
  • выполняет все End to End тесты в браузере;
  • отчитывается о результатах тестов в терминале/командной строке;
  • закрывает браузер и выходит.
E2E-тесты надо запускать при изменении HTML-вьюх и перед коммитами.


На примере приложения angular-phonecat, надо выполнить команды:
  • npm test : start the Karma unit test runner
  • npm run protractor : run the Protractor end to end (E2E) tests
  • npm run update-webdriver : install the drivers needed by Protractor

Q: Как установить инструментальные зависимости для приложения?
A: На примере приложения angular-phonecat, надо выполнить команду:
npm install
Эта команда считывает файл package.json и скачивает инструменты в папку node_modules.
Проект angular-phonecat сконфигурирован на то чтобы устанавливать и запускать эти утилиты через npm скрипты. Т.е. необязательно чтобы данные утилиты были установлены глобально. Для того чтобы установить эти утилиты глобально надо использовать команду:
sudo npm install -g ...
Например, для того чтобы установить Bower надо выполнить команду (для Windows без sudo):
sudo npm install -g bower
Потом можно будет запускать его напрямую: bower install

Запуск npm install автоматически использует bower для загрузки фреймворка Angular в папку app/bower_components.

Q: Как установить Node.js на Debian based дистрибутивы?
A: В Debian based дистрибутивах есть конфликт имен с другой утилитой node. Как вариант можно установить пакет nodejs-legacy, который переименует node в nodejs.
apt-get install nodejs-legacy npm
nodejs --version
npm --version
Для запуска разных версий node.js надо установить Node Version Manager (nvm).

Q: Как узнать версию Node.js?
A: node --version