Как заставить VS Code Debug работать с Foreman и nf start - PullRequest
0 голосов
/ 04 мая 2020

Я использую этот базовый проект Heroku для кластерной среды Node.

https://github.com/heroku-examples/node-workers-example

Однако, так как он использует foreman для создания нескольких процессов при запуске, я не могу понять, как подключить его к VS Code Debug с помощью запуска . json файл, как обычно.

Это команда запуска.

"scripts": {
    "start": "nf start",
  }

1 Ответ

0 голосов
/ 09 мая 2020

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

ПРИМЕЧАНИЕ. Я не использую Форман ... Я только используйте это в производстве

Допущения

Предполагается, что вы используете пример из Heroku для фоновых потоков, и у вас установлен Redis локально (и, конечно, все необходимые пакеты поддержки)

одновременно является секретным соусом!

Сторона разработчика (DEBUG)

Пакет. json

только сценарий раздела

  "scripts": {
    "start": "nf start",
    "server": "node server.js",
    "client": "npm start --prefix client",
    "devRedis": "redis-server.exe",
    "devRedisWorker": "node ./routes/api/workers/worker_redis.js",
    "devDebugPostman": "concurrently \"npm run devRedis\" \"npm run devRedisWorker\"",
    "dev": "concurrently \"npm run devRedis\" \"npm run server\" \"npm run client\"",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
  },
  "dependencies": {
    "bull": "^3.14.0",
    "concurrently": "^5.2.0",
    "express": "^4.17.1",
    "foreman": "^3.0.1",
    "threads": "^1.4.1",
    "throng": "^4.0.0"
  }

Создание все это «работает»

Я использую два простых (на мой взгляд) шага

Шаг 1

Используйте NPM, чтобы запустить Redis и мой рабочий поток

Откройте терминал и

npm run devDebugPostman

это вывод, который я получаю:

D:\Code\Udemy\workerthreadtest>npm run devDebugPostman

> workerthreadtest@0.1.0 devDebugPostman D:\Code\Udemy\workerthreadtest
> concurrently "npm run devRedis" "npm run devRedisWorker"

[0]
[0] > workerthreadtest@0.1.0 devRedis D:\Code\Udemy\workerthreadtest
[0] > redis-server.exe
[0]
[1]
[1] > workerthreadtest@0.1.0 devRedisWorker D:\Code\Udemy\workerthreadtest
[1] > node ./routes/api/workers/workerRedis.js
[1]
[0] [2720] 08 May 16:09:44.775 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server.exe /path/to/redis.conf
[0]                 _._
[0]            _.-``__ ''-._
[0]       _.-``    `.  `_.  ''-._           Redis 3.0.503 (00000000/0) 64 bit
[0]   .-`` .-```.  ```\/    _.,_ ''-._
[0]  (    '      ,       .-`  | `,    )     Running in standalone mode
[0]  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
[0]  |    `-._   `._    /     _.-'    |     PID: 2720
[0]   `-._    `-._  `-./  _.-'    _.-'
[0]  |`-._`-._    `-.__.-'    _.-'_.-'|
[0]  |    `-._`-._        _.-'_.-'    |           http://redis.io
[0]   `-._    `-._`-.__.-'_.-'    _.-'
[0]  |`-._`-._    `-.__.-'    _.-'_.-'|
[0]  |    `-._`-._        _.-'_.-'    |
[0]   `-._    `-._`-.__.-'_.-'    _.-'
[0]       `-._    `-.__.-'    _.-'
[0]           `-._        _.-'
[0]               `-.__.-'
[0]
[0] [2720] 08 May 16:09:44.779 # Server started, Redis version 3.0.503
[0] [2720] 08 May 16:09:44.779 * DB loaded from disk: 0.000 seconds
[0] [2720] 08 May 16:09:44.779 * The server is now ready to accept connections on port 6379
[1] throng start 2 worker(s) 10 job(s) per worker
[1] throng start 2 worker(s) 10 job(s) per worker
[1] throng start 2 worker(s) 10 job(s) per worker

Шаг 2

Опционально установите точки останова в файле по вашему выбору (на стороне сервера) )

Запустите отладчик визуального кода

Теперь я могу использовать Почтальон для отправки вызовов API, я на сервер и нажмите точки останова.

запуск моего сервера:

C:\Program Files\nodejs\node.exe --inspect-brk=17446 server.js 
Debugger listening on ws://127.0.0.1:17446/65d39c8b-33e0-4c90-ae9b-3d12f6db4e27
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.

server info: 
  port 4000
  redis redis://127.0.0.1:6379

Производственная сторона (RELEASE)

Это файлы, которые используются в Heroku

Procfile

web: node server.js
worker: node ./routes/api/workers/worker_redis.js

Упаковка. json

Это «важные» детали для работы производственного материала

  "scripts": {
    "start": "nf start",
  },
  "dependencies": {
    "foreman": "^3.0.1"
  }
...