Статьи

Отладка приложений Node.js в Stackato

Этот пост был изначально написан Хо Мин Ли.

Посмотрим правде в глаза, будут ошибки … в моих приложениях и ваших. От отладки println / echo до использования полнофункциональных отладчиков, разработчик, несомненно, потратит часть своего времени на отладку приложений. К настоящему времени большинство разработчиков знакомы с различными инструментами отладки в своей локальной среде разработки, но, как они переходят к облачным развертываниям, как они могут достичь того же? Возможна ли удаленная отладка даже в облаке? Ну, конечно.

Ранее мы видели, как отлаживать приложения Java в Stackato с помощью службы Harbour . Недавно я спросил, можем ли мы отлаживать приложения Node.js в Stackato, и поэтому я взглянул на инспектор узлов .

Прямо из файла README проекта: «Node Inspector — это интерфейс отладчика для node.js, использующий Blink Developer Tools (бывший WebKit Web Inspector)».

Без лишних слов, вот шаги для настройки инспектора узла для отладки приложения Node.js. Мы будем использовать haste-сервер в качестве примера.

Примечание. Команды в этой статье предназначены для Stackato версии 2.10.6 (на основе Cloud Foundry v1). Некоторые команды и настройки приложения будут немного отличаться при использовании Stackato 3.0 .

  1. Убедитесь, что вы включили инспектор узлов в ваш package.json:

        "dependencies": {
        "winston": "0.6.2",
        "connect": "1.9.2",
        "redis-url": "0.1.0",
        "redis": "0.8.1",
        "uglify-js": "1.3.3",
        "node-inspector": "0.5.0"
      },

  2. Измените файл конфигурации stackato.yml по умолчанию, чтобы добавить службу порта Harbor и --debugфлаг для команды, используемой для запуска сервера:

      name: hastebin
      mem: 128M
      services:
        file-backing: redis
        debug-port: harbor
      processes:
        web: node --debug server.js
  3. Выберите клиент, выполните аутентификацию, затем нажмите код приложения и настройте:

      $ stackato target api.stackato-demo.local
      ...
      $ stackato login
      ...
      $ stackato push -n

  4. Как только приложение запустится, вставьте SSH в контейнер приложения и запустите узел-инспектор с номером порта, возвращаемым $ STACKATO_HARBOR:

      $ stackato ssh hastebin
      hastebin.stackato-demo.local:~$ node-inspector --web-host 0.0.0.0 --web-port $STACKATO_HARBOR
      Node Inspector v0.5.0
       info  - socket.io started
      Visit http://0.0.0.0:4100/debug?port=5858 to start debugging.

  5. С локальной машины узнайте внешний порт Harbor:

     $ stackato service debug-port | grep port
     debug-port 
    | - port      | 39023 
    | - tags      | harbor harbor-1.0 {Persistent external ports service} | 

  6. Откройте браузер и перейдите по адресу http: // <app url>: <ext-harbour-port> / debug? Port = 5858

    Узел-инспектор

  7. С помощью службы портов Harbor, доступной в Stackato, теперь вы можете легко отлаживать приложение Node.js, работающее в облаке, с помощью инспектора узлов. Однако, как и любая другая потрясающая функция, она не лишена своих предостережений. Чтобы запустить узел-инспектор, будьте готовы увеличить лимит памяти для приложения как накладные расходы для отладчика. Кроме того, этот подход предназначен для отладки приложения Node.js с одним экземпляром — когда масштабируется до нескольких экземпляров, все может стать немного сложнее.

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