Мне потребовалось немного времени, чтобы выяснить работоспособную методологию отладки ... но для отладки сервера я сейчас использую:
ПРИМЕЧАНИЕ. Я не использую Форман ... Я только используйте это в производстве
Допущения
Предполагается, что вы используете пример из 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"
}